32 lines
711 B
Java
32 lines
711 B
Java
package Course_Codes;
|
||
|
||
import java.util.Arrays;
|
||
|
||
//要得到自然数n以内的全部素数,必须把不大于根号n的所有素数的倍数剔除,剩下的就是素数。
|
||
public class 埃氏筛法 {
|
||
|
||
public static void main(String[] args) {
|
||
int n=10000;
|
||
boolean isprime[]=new boolean[n+1];
|
||
Arrays.fill(isprime, true);//假定全部都是素数
|
||
//判断特殊情况:0 1
|
||
isprime[0]=false;
|
||
isprime[1]=false;
|
||
|
||
for(int i=2;i*i<=n;i++) {
|
||
if(isprime[i]==true)
|
||
for(int j=2;i*j<=n;j++) //是素数的2i,3i,4i....倍
|
||
isprime[i*j]=false;
|
||
}
|
||
int count=0;
|
||
for(int i=2;i<=n;i++) {
|
||
if(isprime[i]==true) {
|
||
count++;
|
||
System.out.println(i);
|
||
}
|
||
}
|
||
System.out.printf("从1到%d,共有%d个素数", n,count);
|
||
}
|
||
|
||
}
|