任何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