永发信息网

java 1到100内的质数

答案:4  悬赏:80  手机版
解决时间 2021-03-30 21:13
  • 提问者网友:半生酒醒
  • 2021-03-30 08:41
java 1到100内的质数
最佳答案
  • 五星知识达人网友:归鹤鸣
  • 2021-03-30 08:49
for(i = 2; i <= 100; i++){ // 从2开始循环,一直到100
for(j = 2; j <= i/2; j++){ // 对于从2到100之间的数,每个数都拿来除以从2到它自身一半(i/2)的所有数,看是否能被整除;
if(i % j == 0) // 如果能被整除,说明这个数拥有除了 1 和它自身以外的商,不是质数;
break; // 跳出 j 循环,继续 i 循环
}
if(j > i/2){ // 如果2-100之间的某个数,除了1 和它本身之外,没有其他可以整除的数,则是质数;
System.out.println(i); // 输出这个质数
}
}追问为什么要除以到自身的一半?追答例如:10这个数,能整除它的最大的数,除了它本身,就是5,超过了6之后,已经不用看了,不可能再整除。所以,到一半就可以知道它有没有其他能被整除的数了。这是一种提高效率的算法,如果你愿意,也可以不是到一半,而是一直循环到它自身的那地方去:for(j = 2; j <= i; j++) 。
如果有100个数要拿来验证,那么验证到它自身一半的算法所用的时间,远远小于验证到它自身那地方的时间的 。当数值很大、很多的时候,可以节约很多计算资源和时间。追问当i=2,j=2时,余数为0,为什么还能输出2?追答i=2时,
for(j = 2; j <= i/2; j++){
if(i % j == 0)
break;
}

并没有执行;

但是:
if(j > i/2){
System.out.println(i);
}

却被执行了。

i=2时,
j > i/2满足,它(2)是一个质数。
全部回答
  • 1楼网友:蕴藏春秋
  • 2021-03-30 10:59

int i,j;
for(i = 2; i <= 100; i++){//从2数到100,判断之间的每一个数是否是质数

//下面的循环是质数判断过程
for(j = 2; j <= i/2; j++){
if(i % j == 0)
break;//如果这个数能被一个数整除,那么这个数不是质数。break的作用是跳出此次循环,进入下一次循环。
}
if(j > i/2){
System.out.println(i);//如果这个数不能被自身1/2的数整除,他就是质数,输出这个数.System.out.println()这个语句就是输出语句
}
}
System.out.println();//这句语句是多余的,什么也没打印。
完整代码及运行结果如图。

拓展资料
质数(prime number)又称素数,有无限个。质数定义为在大于1的自然数中,除了1和它本身以外不再有其他因数。
这道题只要理解质数的计算方法就容易解答。
  • 2楼网友:走死在岁月里
  • 2021-03-30 10:13
你这代码不好
for(int i=2;i<100;i++){
int j;
for(j=2;j<=Math.sqrt(i);j++){//尝试到i的平方根
if(i%j==0){//若能整除退出内层循环
break;
}
}
//若j大余i的平方根(正)则表明内层循环走完一趟都没能被整除.i为质数
if(j>Math.sqrt(i))System.out.println(i);
}
  • 3楼网友:举杯邀酒敬孤独
  • 2021-03-30 09:03
引用unwmunwm的回答:
for(i = 2; i <= 100; i++){ // 从2开始循环,一直到100
for(j = 2; j <= i/2; j++){ // 对于从2到100之间的数,每个数都拿来除以从2到它自身一半(i/2)的所有数,看是否能被整除;
if(i % j == 0) // 如果能被整除,说明这个数拥有除了 1 和它自身以外的商,不是质数;
break; // 跳出 j 循环,继续 i 循环
}
if(j > i/2){ // 如果2-100之间的某个数,除了1 和它本身之外,没有其他可以整除的数,则是质数;
System.out.println(i); // 输出这个质数
}
}我也刚学了一个星期java了,给你们发一下也是自己写的。
int cont=0;//计数器
start:for(int f=2;f<=100;f++){//循环输出99次
for(int i=2;iif(f%i!=0){//如果f取i到f-1的所有余数不等于0 就跳出循环 计数器+1 然后打印f
}else{//否则余数等于0继续执行goto=start
continue start;
}
}
cont++;
System.out.print(f+"\t");
}
System.out.println("共"+cont+"质数");
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯