• 通过寻找公约数来判断,最经典的算法
boolean flag = true;
for (int i = 2; i <= n; i++) {
    for (int j = 2; j <= Math.sqrt(i); j++) {
	if (i % j == 0) {
         flag = false; //如果i%j==0说明这个数是合数,则让bool=false
        }
    }

    if (flag) {
         System.out.println(i);//这里是素数
    }
   
     flag = true;

}
  • 通过Boolean分类拆分奇偶,并通过奇数倍数自增剔除奇数中的合数
boolean[] bool1 = new boolean[n+1];
for (int i = 3; i <= n; i +=2) { //基数相加,这个会丢失2
    if (!bool1[i]) {
	for (int j = i + i; j <= n; j += i) { bool1[j] = true; }
     }
			
   if (!bool1[i]) {
        System.out.println(i);//这里是素数

    }
}
二者速度差别 
n=10000
time1=14
time2=1

 

相关文章:

  • 2021-04-21
  • 2022-12-23
  • 2022-12-23
  • 2021-12-10
  • 2022-02-07
  • 2021-08-23
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2021-11-02
  • 2022-02-03
  • 2021-12-10
  • 2019-10-25
  • 2021-12-16
  • 2021-05-25
  • 2022-12-23
相关资源
相似解决方案