写了一个输出素数的程序:代码如下
public class BreakStructure { public static void main(String[]args)
{
int n=0,m,j,i;
for(i=1;i<=50;i+=2)
{
m=(int)Math.sqrt((double)i);
for(j=2;j<=m;j++)
if((i%j)==0) break;
if(j>=m+1)
{
if(n%6==0)
System.out.println("\n ");
    System.out.print(i+"\t");
    n++;
}
}
}结果输出的是:1 3 5 7 11 13
 
17 19 23 29 31 37
 
41 43 47有1 肯定是错的阿,还有没得2,该怎么改?

解决方案 »

  1.   

    public class Test {    public static void main(String[]args)
        {
            int n = 0, m, j, i;
            for (i = 1; i <= 50; i += 2)     // 这里已经把 2 跳过去了,因为 i 取值是 1, 3, 5, 5, ....
            {
                m=(int) Math.sqrt((double)i);
                for (j = 2; j <= m; j++)
                if ((i % j) == 0) break;
                if (j >= m + 1)             // i = 1 时 m = 1,j = 2,那么此条件符合,会输出 i,即1
                {
                    if (n % 6 == 0)         // n 是用来控制断行的变量
                    System.out.println("\n ");
                    System.out.print(i + "\t");
                    n++;
                }
            }
        }
    }