首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

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

2013-01-02 
100以内素数我这个怎么改出来package lianxipublic class sushu {public static void main(String[] args

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整除并不能说明它是素数。
对吧?

热点排行