日期:2014-05-20  浏览次数:20698 次

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