任何Java開發人員都須要回答的最多見問題之一就是如何用Java編寫素數程序。它是有關領先的高級通用編程語言的基本概念之一。java
有幾種方法能夠用Java編寫程序來檢查數字是否爲質數。可是,基本邏輯保持不變,即您須要檢查輸入的數字(或已在程序中定義的數字)是否具備除1之外的除數,以及除數自己是否具備除數。編程
素數程序是學習Java必不可少的部分。所以,大多數有關Java的書籍都對此進行了介紹。在繼續討論Java中的質數程序以前,讓咱們首先了解質數的概念及其重要性。安全
除自身之外只能被1除的任何數字稱爲主要數字。三、五、2三、4七、24一、1009都是素數的示例。雖然0和1不能知足質數的要求,可是2是整個無限長質數集中惟一的偶數質數。編程語言
質數表現出許多奇數的數學性質,這使它們成爲普遍應用的理想選擇,其中許多應用屬於信息技術領域。例如,質數可用於僞隨機數生成器和計算機哈希表。ide
在使用加密技術來隱藏信息的歷史中,有不少實例。使人驚訝的是,這是使用質數對信息進行編碼的過程。學習
隨着計算機的引入,現代加密技術也被引入。生成複雜且更長的代碼變得很是可行,這些代碼很難破解。編碼
大多數現代計算機密碼學都依賴於利用大量的主要因素。因爲質數是整數的基石,所以它們對數論家也相當重要。加密
如前所述,有幾種方法能夠用Java實現素數程序。在本節中,咱們將研究三種獨立的方法以及另外兩個用於打印素數的程序。code
這是在Java中實現用於檢查數字是否爲質數的程序的最簡單方法之一。它不須要任何輸入,只需告訴定義的數字(經過整數變量n)是否爲質數便可。代碼以下:
public class PrimeCheck{ public static void main(String args[]){ int i,m=0,flag=0; int n=3; m=n/2; if(n==0||n==1){ System.out.println(n+" is not a prime number."); } else{ for(i=2;i<=m;i++){ if(n%i==0){ System.out.println(n+" is not a prime number."); flag=1; break; } } if(flag==0) { System.out.println(n+" is a prime number."); } } } }
輸出:
3是質數。
此Java代碼演示了使用方法的素數程序的實現。與前面提到的程序同樣,它不要求任何用戶輸入,而且僅對輸入到程序中已定義方法(名爲checkPrime)的數字起做用。這是代碼:
public class PrimeCheckUsingMethod{ static void checkPrime(int n){ int i,m=0,flag=0; m=n/2; if(n==0||n==1){ System.out.println(n+" is not a prime number."); }else{ for(i=2;i<=m;i++){ if(n%i==0){ System.out.println(n+" is not a prime number."); flag=1; break; } } if(flag==0) { System.out.println(n+" is a prime number."); } } } public static void main(String args[]){ checkPrime(1); checkPrime(3); checkPrime(17); checkPrime(20); } }
輸出:
1不是質數。
3是質數。
17是質數。
20不是質數。
該Java程序相似於上述程序。可是,此程序提示用戶輸入。代碼以下:
import java.util.Scanner; import java.util.Scanner; public class PrimeCheckUsingMethod2 { public static void main(String[] args) { Scanner s = new Scanner(System.in); System.out.print("Enter a number: "); int n = s.nextInt(); if (isPrime(n)) { System.out.println(n + " is a prime number."); } else { System.out.println(n + " is not a prime number."); } } public static boolean isPrime(int n) { if (n <= 1) { return false; } for (int i = 2; i < Math.sqrt(n); i++) { if (n % i == 0) { return false; } } return true; } } )
輸入數字:22
22不是質數。
此代碼將演示一個Java程序,該程序可以打印1到100之間存在的全部素數。該程序的代碼爲:
class PrimeNumbers { public static void main (String[] args) { int i =0; int num =0; String primeNumbers = ""; for (i = 1; i <= 100; i++) { int counter=0; for(num =i; num>=1; num--) { if(i%num==0) { counter = counter + 1; } } if (counter ==2) { primeNumbers = primeNumbers + i + " "; } } System.out.println("Prime numbers between 1 and 100 are :"\n); System.out.println(primeNumbers); } }
輸出:
1到100之間的質數爲:
2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97
此Java程序將打印介於1和n之間的全部素數,其中n是用戶輸入的數字。這是代碼:
import java.util.Scanner; class PrimeNumbers2 { public static void main (String[] args) { Scanner scanner = new Scanner(System.in); int i =0; int num =0; String primeNumbers = ""; System.out.println("Enter a number:"); int n = scanner.nextInt(); scanner.close(); for (i = 1; i <= n; i++) { int counter=0; for(num =i; num>=1; num--) { if(i%num==0) { counter = counter + 1; } } if (counter ==2) { primeNumbers = primeNumbers + i + " "; } } System.out.println("Prime numbers between 1 and n are:"/n); System.out.println(primeNumbers); } }
輸出:
輸入數字:22
1至22之間的質數爲:
2 3 5 7 11 13 17 19