如果一个数为素数,那么它的倍数一定是合数。由此可得,对于求n以内的素数,分配一个大小为n+1的boolean类型的数组,首先将下标为奇数的boolean量置为true,然后3开始筛选。
import java.util.Scanner;
public class Main{
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
int n=scanner.nextInt();
boolean[] isPrime=new boolean[n+1];
for(int i=1;i<=n;i=i+2){
isPrime[i]=true;
}
isPrime[2]=true; //2是素数
for(int i=3;i<n;i++){
if(isPrime[i]){
for(int j=i+i;j<=n;j=j+i){ //将素数i的倍数标记为合数
isPrime[j]=false;
}
}
}
//输出素数
//int count=0;
// for(int i=2;i<=n;i++){
// if(isPrime[i]){
// count++;
// if(count==10){
// System.out.print(i);
// System.out.println();
// count=0;
// }else{
// System.out.print(i+" ");
// }
// }
// }
}
}