作业帮 > 综合 > 作业

设计一个程序,求出200~1000之间的所有素数,要求每行输出5个素数.判断一个整数是否为素数用一个函数来实

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/15 02:57:47
设计一个程序,求出200~1000之间的所有素数,要求每行输出5个素数.判断一个整数是否为素数用一个函数来实
筛法求素数,速度超快.public class SievePrime {
\x09
\x09static int maxNumber = 1000;
\x09
\x09public static void main(String arg[]){
\x09\x09
\x09\x09boolean isPrime[] = new boolean[maxNumber+1];
\x09\x09
\x09\x09// 首先假定所有的数都是素数                                 
\x09\x09for (int i = 2; i< maxNumber+1; i++)
\x09\x09\x09isPrime[i] = true;
\x09\x09
\x09\x09for (int i = 2; i< (int)Math.sqrt(maxNumber); i++){
\x09\x09    if (isPrime[i]){
\x09\x09        
\x09\x09        //把当前素数的整数倍筛掉
\x09\x09        for (int j = i*i; j<maxNumber+1; j=j+i)
\x09\x09        \x09isPrime[j] = false;//j ∈ {i^2, i^2+i, i^2+2i, ..., limit}
\x09\x09    }
\x09\x09}
\x09\x09
\x09\x09
\x09\x09//显示最后结果
\x09\x09///*
\x09\x09int n = 0;
\x09\x09for (int i = 200; i< maxNumber+1; i++)
\x09\x09    if (isPrime[i]) {
\x09\x09    \x09 
\x09\x09    \x09if (n%5 == 0)
\x09\x09    \x09\x09System.out.println();
\x09\x09    \x09System.out.print(i+"\t");
\x09\x09    \x09n++;
\x09\x09    }
\x09  //*/
\x09}
}