只能被1和它自己本身所整除的数成为素数或质数,以下为三种求N以内素数的算法。
二、筛数法求素数
筛数法求素数的基本思想是:把从1开始的、某一范围内的正整数从小到大顺序排列, 1不是素数,首先把它筛掉。剩下的数中选择最小的数是素数,然后去掉它的倍数。依次类推,直到筛子为空时结束。
一、从1至N全部遍历,当这个数只能被1和n整除它就是素数。
/**
* 打印自然数n以内的素数
* @param n
*/
public void printPrime(int n){
//是否为质数
boolean isPrime;
for (int i = 1; i <= n; i++) {
isPrime = true;
for (int j = 2; j < i; j++) {
//若能除尽,则不为质数
if ((i % j) == 0) {
isPrime = false;
break;
}
}
//如果是质数,则打印
if (isPrime) {
System.out.println(i);
}
}
}
二、筛数法求素数
筛数法求素数的基本思想是:把从1开始的、某一范围内的正整数从小到大顺序排列, 1不是素数,首先把它筛掉。剩下的数中选择最小的数是素数,然后去掉它的倍数。依次类推,直到筛子为空时结束。
public void printPrimes(int n){
//定义arr数组来表示筛选出来的素数
boolean arr[] = new boolean[n];
//arr数组坐标i不是素数的话就令arr[i]=false
for(int k=2;k<n;k++){
if(!arr[k]){
for(int i=2*