读书人

100以内素数小弟我这个如何改出来

发布时间: 2013-01-02 13:08:44 作者: rapoo

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;
}

[解决办法]
引用:
我想问下我的这段代码这块算法哪不对呢 求指点
public static boolean bingo(int i) {
boolean bingo=
for(int j=2;j<i;j++)
{
if(i%j==0)//如果能被除开说明除了1和它本身之外还有别的数能除开它所以不是素数
{
return false;
}else
{
return true;
}
……




你这个就是说它还没有循环完你就判定了。好比9,你一开始是2,然后你发觉没余数,就说他是素数,然后返回了。实际上3可以。
也就是说你要循环完,从2-9都说明没有余数,才能返回。
[解决办法]
引用:
我想问下我的这段代码这块算法哪不对呢 求指点
public static boolean bingo(int i) {
boolean bingo=
for(int j=2;j<i;j++)
{
if(i%j==0)//如果能被除开说明除了1和它本身之外还有别的数能除开它所以不是素数
{
return false;
}else
{
return true;
}
……

你这个的问题是值判断了j=2的情况
if是对的,但是else不可以,你应该循环完了才能知道它是不是素数
能被2整除,说明它不是素数;不能被2整除并不能说明它是素数。
对吧?

读书人网 >J2SE开发

热点推荐