素数查找的两种算法

  • 通过寻找公约数来判断,最经典的算法
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
原文地址:https://www.cnblogs.com/jeasion/p/10758349.html