/*
100000以内的所有质数的输出
体会算法的优化一
*/
public class PrimeNumber1 {
public static void main(String[] args) {
//获取系统当前的时间:返回1970-01-01 00:00:00到现在当前时间的毫秒数。
long star = System.currentTimeMillis();
boolean fag = true;
int even = 0;
for (int i = 2; i <= 100000 ; i++) {
for (int j = 2; j <= i-1; j++) { //去掉了1和这个数本身
if (i % j ==0) {
fag = false;
break; //当有第一个false时, 跳出本次循环
}
}
if (fag) {
System.out.println(i);
even ++; //记录质数的个数
}
fag = true;
}
System.out.println("质数个数为:" + even);
long end = System.currentTimeMillis();
System.out.println("所花费的时间为:" + (end - star));
}
}
二
/*
100000以内的所有质数的输出
体会算法的优化二
*/
public class PrimeNumber2 {
public static void main(String[] args) {
//获取系统当前的时间:返回1970-01-01 00:00:00到现在当前时间的毫秒数。
long star = System.currentTimeMillis();
boolean fag = true;
int even = 0;
for (int i = 2; i <= 100000 ; i++) {
for (int j = 2; j <= Math.sqrt(i); j++) { //开方
if (i % j ==0) {
fag = false;
break; //当有第一个false时, 跳出本次循环
}
}
if (fag) {
System.out.println(i);
even ++; //记录质数的个数
}
fag = true;
}
System.out.println("质数个数为:" + even);
long end = System.currentTimeMillis();
System.out.println("所花费的时间为:" + (end - star));
}
}
三
//100000以内的所有质数的输出
//优化三
//使用Continue 跳转
public class PrimeNumber3 {
public static void main(String[] args) {
long star = System.currentTimeMillis();
int even = 0;
l:for (int i = 2; i <=100000; i++) {
for (int j = 2; j <=Math.sqrt(i); j++) {
if (i % j ==0) {
continue l; //补充:带标签的break或continue:表示显示的结束指定层的循环或当次循环。
}
}
System.out.println(i);
even++; //记录质数个数
}
long end = System.currentTimeMillis();
System.out.println("所用时间为:" + (end - star));
System.out.println("质数个数为:" + even);
}
}