回 帖 发 新 帖 刷新版面

主题:JAVA 帮我找下错  !!~~~谢谢

public class primeNumber {

    /**
     * @param args
     */
    public static void main(String[] args) {
        final int SIZE=1000;
        int    primeNo[]=new int[SIZE];
        int a,j,k,i,f1;
        k=0;f1=1;
        for(a=3;a<1000;a++)
        {
            for(j=2;j<a;j++)
            {
                if(a%j==0) f1=0;
            }
             if(f1!=0)
             {         
                 primeNo[k]=a;k++;
             }
             else break;
        }
        for(i=0;i<primeNo.length;i++)
        {
           System.out.print(" "+primeNo[i]);
        }
    }

}
输出的结果 是 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0  0 0 0 0 
我想找素数  呀

回复列表 (共4个回复)

沙发

改成这样,很简单。。。
public class primeNumber {
    public static void main(String[] args) {
        int a,j,f1=0;
        for(a=3;a<1000;a++)
        {
            for(j=2;j<a;j++)
            {
                if(a%j!=0) {f1=1;continue;}
                else {f1=0;break;}
            }
            if(f1==1)System.out.print(" "+a);
        }
    }

}

板凳

主要存在着两个问题:
一、循环的思想不清晰,不知道下一步循环会出现什么结果,导致这个循环乱套了。建议写循环的时候自己把数字代进去,循环两三次,以验证算法;
二、最后的打印部分i和k对不上号,也就是primeNo[i]并不等于primeNo[k]。

3 楼

public class primeNumber 
{
    /**
     * @param args
     */
    public static void main(String[]args) 
    {
        final int SIZE = 1000;
        int [] primeNo= new int[SIZE];
        int k = 0;
        for(int a=3;a<1000;a++)
        {
            int f1 = 1;
            for(int j=2;j<a;j++)
            {
                if(a%j==0) 
                {
                    f1 = 0;
                    break;
                }
            }
            if(f1==1)
            {         
                primeNo[k++] = a;
            }
        }
        for(int i=0;i<k;i++)
        {
           if(primeNo[i]!=0)
           {
               System.out.print(primeNo[i]+"\t");
           }
        }
    }
}

4 楼

为什么 最后的打印部分i和k对不上号,也就是primeNo[i]并不等于primeNo[k]。 
请帮忙解释下  谢谢了!!!!~~~~~~~~~~~

我来回复

您尚未登录,请登录后再回复。点此登录或注册