100以内素数我这个怎么改出来
package lianxi;
public class sushu {
public static void main(String[] args) {
for(int i=2;i<=100;i++)
{
if(bingo(i))
{
System.out.println(i);
}
}
}
public static boolean bingo(int i) {
boolean bingo=false;
for(int j=2;j<i;j++)
{
if(i%j==0)
{
return false;
}else
{
return true;
}
}
return bingo;
}
}
------解决方案--------------------
public static boolean bingo(int i)
{
boolean bingo=true;//改一下
for(int j=2;j<i;j++)
{
if(i%j==0)
{
return false;
}
/*else //一个余数不等于零,不能说明就是素数.
{
return true;
}*/
}
return bingo;//循环完,没有提前返回,肯定是素数。
}
------解决方案--------------------楼上正解!!
也可循环到它的平方根
public static boolean bingo(int i)
{
if(i<2)
return false;
for(int j=2;j<=Math.sqrt(i);j++)
{
if(i%j==0)
{
return false;
}
}
return true;
}
------解决方案--------------------
你这个就是说它还没有循环完你就判定了。好比9,你一开始是2,然后你发觉没余数,就说他是素数,然后返回了。实际上3可以。
也就是说你要循环完,从2-9都说明没有余数,才能返回。
------解决方案--------------------
你这个的问题是值判断了j=2的情况
if是对的,但是else不可以,你应该循环完了才能知道它是不是素数
能被2整除,说明它不是素数;不能被2整除并不能说明它是素数。
对吧?