/**
* @author 苗晓强
* @date 2023/7/25 23:45
* 求一定范围内的质数
* 质数定义:除了1和它本身,没有其他的公约数
*/
public class PrimeNumberTest {
public static void main(String[] args) {
//求 100 以内的质数
primeNumber1();
//求 100000 以内的质数
primeNumber2();
}
private static void primeNumber2() {
int count = 0;
long start = System.currentTimeMillis();
for (int i = 2; i <= 100000; i++){
boolean flag = true;
//Math.sqrt(i) 缩小内层循环的范围,是提高性能的一个关键点
for (int j = 2; j <= Math.sqrt(i); j++){
if (i % j == 0){
flag = false;
//查到有 除了 1 和自身能整除的数,就跳出循环,是提高性能的另一个关键点
break;
}
}
if (flag){
count++;
}
}
long end = System.currentTimeMillis();
System.out.println("查询100000以内的质数,共" + count + "个,共耗时:" + (end - start) + "毫秒!");
}
private static void primeNumber1() {
int count = 0;
long start = System.currentTimeMillis();
for (int i = 2; i <= 100; i++){
boolean flag = true;
for (int j = 2; j < i; j++){
if (i % j == 0){
flag = false;
}
}
if (flag){
count++;
}
}
long end = System.currentTimeMillis();
System.out.println("查询100以内的质数,共" + count + "个,共耗时:" + (end - start) + "毫秒!");
}
}
Java基础-求十万以内的质数
Java实现质数判断并优化性能
于 2023-07-26 00:46:11 首次发布
该代码示例展示了如何用Java计算一定范围内的质数,并通过使用Math.sqrt优化算法性能。primeNumber1()和primeNumber2()方法分别计算100以内和100000以内的质数,通过减少内层循环次数和提前跳出循环来提高效率。
172

被折叠的 条评论
为什么被折叠?



