int i,j;
i=1;
System.out.println("1是素数");
for(;i<=100;i++){
j=1;
for(;j<=i/2;j++)
  {
if(i%j==0){j=101;}
   }
if(j!=101) System.out.println(i+"is 素数");
}

解决方案 »

  1.   

    import java.util.*;public class Sieve {
      public static final boolean PRINT=true;  public static void main(String[] args) {
        int n=1000000;//多少以内
        long start=System.currentTimeMillis();
        BitSet b=new BitSet(n);
        int count=0;
        int i;    for(i=2;i<=n;i++)
          b.set(i);
        i=2;
        while(i*i<=n)
        {
          if(b.get(i))
          {
            if(PRINT) System.out.println(i);
            count++;
            int k=2*i;
            while(k<=n)
            {
              b.clear(k);
              k+=i;
            }
          }
          i++;
        }    while(i<=n)
        {
          if(b.get(i))
          {
            if(PRINT) System.out.println(i);
            count++;      }
          i++;
        }
        long end=System.currentTimeMillis();
        System.out.println(count+" primes");
        System.out.println((end-start) + " milliseconds");
      }}
    java里经典的计算素数的程序
      

  2.   

    多谢楼上两位的帮忙!!!!
    to:eaglecoody   你是用C语言编的程序吧,我斗胆说一下你的程序,for(;i<=100;i++)是不是应该改为for(i=2;i<=100;i++),因为刚开始外部变量是1,在循环里面初值还是1呀,不会自动加1的。还有一个问题就是if(i%j==0){j=101};是不是有点问题,首先2,3都是素数,但是不能显示出来呀。
      

  3.   

    他的方法比较好理解,你稍微改一下就好了,代码如下:
    public class PrimeNumber
    {
    public static void main(String[] args)
    {

    int n = 1000;  //计算1-n之间的素数
     System.out.println("素数如下:");
    boolean isPrime = false;
    for (int i=1; i<=n; i++)
    {
    isPrime = true;
    for (int j=2; j<=i/2; j++)
    {
    if (i%j==0)
    {
     isPrime = false;
     break;

    }

    }
    if(isPrime == true)
    {
     System.out.println(" " + i);
    }
    }
    }
    }