标题: 关于这两段程序执行的执行效率问题 [打印本页] 作者: hua2319 时间: 2016-4-4 19:27 标题: 关于这两段程序执行的执行效率问题 疑问:下题有两个解决方案,方案一虽然代码简洁但执行效率会比方案二的高吗?
题目:分析以下需求,并用代码实现:(有难度,可选做!)
(1)打印1-100之间的所有素数及个数
(2)每行输出5个满足条件的数,之间用空格分隔
(3)如果一个大于1的自然数,这个数只能被1和其本身整除,这个数就叫素数。
(4)如:2 3 5 7 11
------------------方案一--(疑问:方案一虽然代码简洁但执行效率会比方案二的高吗?)-------------
class Test_8 { //
public static void main(String[] args) {
int count = 0; //定义变量count用记录打印素数的个数.
for (int i = 1; i <= 100; i++) { //定义外层循环遍历1~100的整数
int num = 0; //定义变量num用于记录i%j==0的次数
for (int j = 1; j <= i; j++) { //定义内层循环,使的i去模以1~i所有整数
if (i % j == 0) { //如果i%j==0,则num++,来记录i被整除的次数
num++; //记录i被整除的次数
}
}
if (num == 2) { //如果i被整除的次数等于2,则说明i是素数
System.out.print(i+"\t");
count++; //记录打印素数的个数
if (count % 5 == 0) { //当打印素数的个数为5的倍数时则打印换行
System.out.println(); //换行
}
}
}
System.out.println("在1~100之间有"+count+"个素数");
}
}
---------------输出结果---------------
2 3 5 7 11
13 17 19 23 29
31 37 41 43 47
53 59 61 67 71
73 79 83 89 97
在1~100之间有25个素数
------------------方案二-------------------
class Test_9 {
public static void main(String[] args) {
int count = 0;
for (int i = 1; i <= 100; i++) {
if (i == 1) { //排除1
continue;
}else if (i == 2 || i == 3) { //如果i=1或者i=3时直接打印
System.out.print(i+"\t");
count++;