首页 新闻 会员 周边

自己写的,求101到200的质数,但求不了,不知那错了,输出的都是从101数到200

0
[已解决问题] 解决于 2017-03-09 17:48

public class zhishu {
public static void main (String[] args) {

for(int i = 101; i <= 200; i++) {
for(int j= 2;j<i; j++) {
if(i % j == 0) {
System.out.print(" "+ i);

    break;
}

}
if(i<100) {continue;}


}

}
}

ccccc三的主页 ccccc三 | 初学一级 | 园豆:5
提问于:2017-03-04 15:25
< >
分享
最佳答案
0

虽然不知道质数是怎么个算法,但是你第二个for循环里面的break用法导致你每次在j=1时,执行完就跳出了

因为任何数%1都等于0,所以会……

奖励园豆:5
让我发会呆 | 老鸟四级 |园豆:2929 | 2017-03-04 16:14

那是不是把改了就行了?

ccccc三 | 园豆:5 (初学一级) | 2017-03-04 20:38

@ccccc三: 当然是..学编程先学调试吧.一步一步走.然后看哪步和自己预期的不一样.

吴瑞祥 | 园豆:29449 (高人七级) | 2017-03-04 21:17

@吴瑞祥: 怎么一步步来调试,刚学不久

ccccc三 | 园豆:5 (初学一级) | 2017-03-04 21:20

我改了,但求到的是非质数,这又是为啥啊

ccccc三 | 园豆:5 (初学一级) | 2017-03-04 21:39

@ccccc三: 

@Test
//质数(prime number)又称素数,有无限个。质数定义为在大于1的自然数中,除了1和它本身以外不再有其他因数的数称为质数。
public void test(){
    for(int i = 101; i <= 200; i++) {
         boolean isPrime = true;
         for(int j=2 ;j<i; j++) {
              if (i % j == 0) {
                  isPrime = false;
                  break;
             }
      }
       if (isPrime) {
             System.out.println(i);
       }
}
}

让我发会呆 | 园豆:2929 (老鸟四级) | 2017-03-05 10:16

@让我发会呆: 这个我懂,我想问的是,我这代码,到底错在哪,输出的是非质数。

ccccc三 | 园豆:5 (初学一级) | 2017-03-05 12:33
其他回答(3)
0

j = 1 ?          ?

去冰三分糖 | 园豆:380 (菜鸟二级) | 2017-03-04 17:22

自己赋值啊,不行吗?

支持(0) 反对(0) ccccc三 | 园豆:5 (初学一级) | 2017-03-04 20:37
0

请理解一下啥是质数

lzj123 | 园豆:158 (初学一级) | 2017-03-08 13:29
0

 

你这个代码,if判断后,如果除于操作都得0了当然不是质数,你还打出来干嘛。。。

而且我建议你使用一个布尔值来记录当前循环的数是不是质数,每次外层循环开始,都进行一次重新赋值成true(是质数),在里层循环的判断中,只要有一次除于运算==0,那么就将此值直接赋值为false,因为它不再可能是质数了。

里层循环全部结束后,执行一个if判断,判断设定的布尔值到底是true或者false,通过判断true来进行打印即可。

 

名字不好起啊 | 园豆:401 (菜鸟二级) | 2017-03-09 17:18
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册