// 100 以内所有质数
// 质数(素数):只能被1和它本身整除的自然数。
// 方法一:
class PrimeNumberTest {
public static void main(String[] asrgs){
String str = "0-100质数为: ";
boolean isPrimeNumber = true;
// 获取程序运行开始时的当前时间
long start = System.currentTimeMillis();
int count = 0;
for(int i = 2 ; i <= 100000; i++){
// for (int j = 2; j < i;j++ ) { //
for (int j = 2; j <= Math.sqrt(i);j++ ) { //优化二:对本身是质数的有效
if (i % j == 0) {
isPrimeNumber = false;
break;// 优化一:只对非质数的自然数是有效的
}
}
if (isPrimeNumber) {
// str = str + i + " ";
count++;
}
isPrimeNumber = true;
}
// System.out.println(str);
System.out.println(count);
// 获取程序运行结束时的当前时间
long end = System.currentTimeMillis();
System.out.println(end - start);
/*
说明:当 i = 100000 时,(输出str时)
没有优化的时间是:12314
优化一的时间为: 1294
优化二的时间为: 273
优化一 + 优化二 :146
(输出count时)
没有优化的时间是:12228
优化一的时间为: 1127
优化二的时间为: 125
优化一 + 优化二 :12
特别说明:
算法重要性。
*/
}
}
// 方式二:
String str = "0-100质数为: ";
// 获取程序运行开始时的当前时间
long start = System.currentTimeMillis();
int count = 0;
label: for(int i = 2 ; i <= 100; i++){
// for (int j = 2; j < i;j++ ) { //
for (int j = 2; j <= Math.sqrt(i);j++ ) {
if (i % j == 0) {
continue label;
}
}
// str = str + i + " ";
count++;
}
// System.out.println(str);
System.out.println(count);
// 获取程序运行结束时的当前时间
long end = System.currentTimeMillis();
System.out.println(end - start);
网友评论