Java基础编程——输出[1,100]的所有质数
一、前言
目的要求:输出[1,100]的所有质数 相关技术: 1、java的for循环嵌套调用 2、Math的sqrt(Int)方法 ··· 基础功能:显示[1,100]的所有质数
二、编程
描述:100以内的所有质数的输出。 质数:素数,只能被1和它本身整除的自然数。–>从2开始,到这个数-1结束为止,都不能被这个数本身整除。 最小的质数是:2。
1、步骤一:编写最基本的功能
int count = 0;
for(int figure = 1; figure <= 100; figure++){
boolean isPrime=true;
for(int yinShu = 2; yinShu < figure; yinShu++){
if(figure % yinShu == 0){
isPrime = false;
}
}
if(isPrime){
System.out.print(figure + "\t");
count++;
if(count % 5 == 0){
System.out.println();
}
}
}
}
System.out.print("\n[1,100]内一共有" + count + "个质数");
2-1、步骤二:运用普通方法优化代码 (1)减少内循环(yinShu 的循环)的遍历次数: Math.sqrt()为算术平方根,(y=m*n,则一定会有m和n其中一个小于或者等于y的平方根)
int k = (int)Math.sqrt(figure);
for(;figure <= k;){···}
(2)打断内循环(yinShu 的循环)的不必要的遍历次数:
for(;figure <= k;){···
if(figure % yinShu == 0){
isPrime = false;
break;
}
}
2-2、步骤二(额外):运用标签label优化代码
int count = 0;
label:for(int figure = 1; figure <= 1000; figure++){
int k = (int)Math.sqrt(figure);
for(int yinShu = 2; yinShu <= k; yinShu++){
if(figure % yinShu == 0){
continue label;
}
}
System.out.print(figure + "\t");
count++;
if(count % 10 == 0){
System.out.println();
}
}
System.out.print("\n[1,100]内一共有" + count + "个质数");
long end = System.currentTimeMillis();
System.out.println("\n所花费的时间为" + (end - start) + "毫秒");
三、实现结果
四、总结 编写java项目或者某些功能: 我们需要先将最基本的功能编写出来并且正确执行出来; 然后,我们再进行优化。
五、额外的程序功能
long start = System.currentTimeMillis();
···
···
long end = System.currentTimeMillis();
System.out.println("\n所花费的时间为" + (end - start) + "毫秒");
实现结果
|