2020 咱們用Java寫素數程序

在這裏插入圖片描述任何Java開發人員都須要回答的最多見問題之一就是如何用Java編寫素數程序。它是有關領先的高級通用編程語言的基本概念之一。java

有幾種方法能夠用Java編寫程序來檢查數字是否爲質數。可是,基本邏輯保持不變,即您須要檢查輸入的數字(或已在程序中定義的數字)是否具備除1之外的除數,以及除數自己是否具備除數。編程

素數程序是學習Java必不可少的部分。所以,大多數有關Java的書籍都對此進行了介紹。在繼續討論Java中的質數程序以前,讓咱們首先了解質數的概念及其重要性。安全

質數–定義和重要性

除自身之外只能被1除的任何數字稱爲主要數字。三、五、2三、4七、24一、1009都是素數的示例。雖然0和1不能知足質數的要求,可是2是整個無限長質數集中惟一的偶數質數。編程語言

質數表現出許多奇數的數學性質,這使它們成爲普遍應用的理想選擇,其中許多應用屬於信息技術領域。例如,質數可用於僞隨機數生成器和計算機哈希表。ide

在使用加密技術來隱藏信息的歷史中,有不少實例。使人驚訝的是,這是使用質數對信息進行編碼的過程。學習

隨着計算機的引入,現代加密技術也被引入。生成複雜且更長的代碼變得很是可行,這些代碼很難破解。編碼

大多數現代計算機密碼學都依賴於利用大量的主要因素。因爲質數是整數的基石,所以它們對數論家也相當重要。加密

進一步瞭解素數在IT安全中重要性3d

Java素數程序

如前所述,有幾種方法能夠用Java實現素數程序。在本節中,咱們將研究三種獨立的方法以及另外兩個用於打印素數的程序。code

類型1 –一個簡單的程序,不提供輸入

這是在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是質數。

類型2 – Java使用方法的程序(無需用戶輸入)

此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不是質數。

類型3 – Java使用方法的程序(須要用戶輸入)

該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不是質數。

Type 4 –用Java打印從1到100的素數的程序

此代碼將演示一個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

Type 5 –用Java打印從1到n的素數的程序(用戶輸入)

此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

完成!

個人原文章
http://bjbsair.com/2020-03-09/ai/1912/

相關文章
相關標籤/搜索