我对你的代码做了一点优化
public static void main2(String[] args) {
//获取当前时间距离1970-01-01 00:00:00的毫秒数
long start = System.currentTimeMillis();
//遍历100以内的自然数
for (int i = 2; i <= 100000; i++) {
boolean b = true;
//优化二:对本身是质数的自然数是有效的
if ((i & 1) == 0) {
b = false;
} else {
for (int j = 3; j < Math.sqrt(i); j+=2) {
if (i % j == 0) { //%是求模运算,即2%10=2,10%2=0,10%3=1。
b = false;
break;//优化一:只对本身非质数的自然数是有效的
}
}
}
if (b) {
System.out.print(i + " ");
}
}
long end = System.currentTimeMillis();
System.out.println("\n花费时间:" + (end - start));
}
大概思路就是 只要是偶数 且大于2 就一定是合数 所以第二个循环可以将步长调整至2 减少循环次数
Java实现输出100000以内的质(素)数及算法结构优化输出100000以内的所有质数 质数:也叫素数,只能被1和他本身整除的自然数 最小的质数:2 方法一:效率很低 输出结果: 实际上,上面的这种方法基本上是效率最低的。但因为1...