//--输出前50个素数 int cnt = 1; int[] prime = new int[50]; prime[0] = 2; Mark: for(int xxx = 3;cnt < 50;xxx++) { for(int i = 0;i < cnt;i++) { if(xxx % prime[i] == 0) { continue Mark; } } prime[cnt] = xxx; cnt++; } for(int k : prime) { System.out.print(k+" "); }2.素数倍数标记,丢掉,剩下的就是素数
由于一定范围内素数本身比非素数少得多,因此标记并丢掉素数的倍数效率比较高。
//素数倍数标记,素数的倍数丢掉,剩下的就是素数,更快! boolean [] isPre = new boolean [101];//输出100以内的素数 for(int i = 0;i < isPre.length;i++) { isPre[i] = true;//一开始假设都是素数,遇到不是素数的标记为false } for(int i = 2;i < isPre.length;i++) { if(isPre[i]) { for(int j =2;j*i <= 100;j++) { isPre[i*j] = false; } } } for(int i = 0;i < isPre.length;i++) { if(isPre[i]) { System.out.print(i+" "); } }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)