1 /* 2 求质数的优化方案 3 */ 4 package first_1; 5 6 public class primeNumberTest1 { 7 public static void main(String[] args) { 8 9 boolean isFlag = true;//标识i是否被j除尽,一旦除尽,修改其值 10 int count = 0;//记录质数的个数 11 12 //获取当前时间距离1970-01-01 00:00:00的毫秒数 13 long start = System.currentTimeMillis(); 14 15 for (int i = 2; i <= 100000; i++) {//遍历100000以内的自然数 16 17 //优化二:对本身是质数的自然数是有效的。 18 //for (int j = 2; j < i; j++) {//j:被i去除 19 for (int j = 2; j <= Math.sqrt(i); j++) {//j:被i去除 20 if (i % j == 0) { 21 isFlag = false; 22 break;//优化一:只对本身非质数的自然数是有效的。 23 } 24 } 25 if (isFlag == true) {//i被j除尽 26 System.out.println(i); 27 count++; 28 } 29 //重置isFlag 30 isFlag = true; 31 } 32 33 //获取当前时间距离1970-01-01 00:00:00的毫秒数 34 long end = System.currentTimeMillis(); 35 System.out.println("质数的个数为:" + count); 36 System.out.println("所花费的时间为:" + (end - start));//17110 - 优化一:1546 - 优化二:103 37 } 38 39 }
关于质数的几个求解方案,每次优化都会提升运算效率