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;}
}
}
}
虽然不知道质数是怎么个算法,但是你第二个for循环里面的break用法导致你每次在j=1时,执行完就跳出了
因为任何数%1都等于0,所以会……
那是不是把改了就行了?
@ccccc三: 当然是..学编程先学调试吧.一步一步走.然后看哪步和自己预期的不一样.
@吴瑞祥: 怎么一步步来调试,刚学不久
我改了,但求到的是非质数,这又是为啥啊
@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);
}
}
}
@让我发会呆: 这个我懂,我想问的是,我这代码,到底错在哪,输出的是非质数。
j = 1 ? ?
自己赋值啊,不行吗?
请理解一下啥是质数
你这个代码,if判断后,如果除于操作都得0了当然不是质数,你还打出来干嘛。。。
而且我建议你使用一个布尔值来记录当前循环的数是不是质数,每次外层循环开始,都进行一次重新赋值成true(是质数),在里层循环的判断中,只要有一次除于运算==0,那么就将此值直接赋值为false,因为它不再可能是质数了。
里层循环全部结束后,执行一个if判断,判断设定的布尔值到底是true或者false,通过判断true来进行打印即可。