埃拉托色尼筛选法(the Sieve of Eratosthenes)简称埃氏筛法,是古希腊数学家埃拉托色尼(Eratosthenes )提出的一种筛选法。 是针对自然数列中的自然数而实施的,用于求一定范围内的质数。
埃氏筛法步骤编辑
(1)先把1删除(现今数学界1既不是质数也不是合数)
(2)读取队列中当前最小的数2,然后把2的倍数删去
(3)读取队列中当前最小的数3,然后把3的倍数删去
(4)读取队列中当前最小的数5,然后把5的倍数删去
(5)读取队列中当前最小的数7,然后把7的倍数删去
(6)如上所述直到需求的范围内所有的数均删除或读取
“`
public class SieveOfEratosthenes {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc=new Scanner(System.in);
System.out.println("请输入需要查询的范围(0~n):");
int n=sc.nextInt();
int a[]=new int[n+1];
a=Eratosthenes(n);
for(int i=0;i<a.length;i++){
if(a[i]!=0&&a[i]!=1){
System.out.println(a[i]);//输出所有质数(素数),0代表不是质数。
}
}
}
public static int[] Eratosthenes(int n){
int a[]=new int[n+1];
for(int i=0;i<=n;i++){
a[i]=i;
}
for(int i=2;i<Math.sqrt(n);i++){//1既不是质数也不是合数,所有从2开始;
for(int j=i+1;j<n+1;j++){
if(a[j]%i==0&&a[j]!=0){//判断是否为质数
a[j]=0;//将所有非质数用0替换
}
}
}
return a;
}
}“`