package day02;
public class week
{
public static void main(String[] args)
{for(int i=1;i<=100;i++)
        {for(k=0,j=1;j<=i;j++)
        {
        if(i%j==0)
        k++;
        if (k==2&&j==i)
        System.out.println(i);
        }}
}
}

解决方案 »

  1.   

    public static void main(String[] args) {
    int j;
    for(int i=0;i<=100;i++){
    j=2;
    while(i%j!=0)
    j++;
    if(i==j){
    System.out.println(i); }
    }
    }
      

  2.   

    楼上的是达内8月底开班的么,猛哥昨天给的作业就是求质数.
    第一处错误:for(k=0,j=1;j <=i;j++) 这里没有申明k,j变量.怎么使用呢.应改为:for(int k=0,j=1;j <=i;j++) 
    改正后即正确,不过我看不明白你那是怎么算的,
    下边这种方法应该容易理解些,两个答案都是一样的
    /**循环求质数,因为1即不是质数也不是合数,所以从2开始循环*/
    for(int i=2;i<=100;i++)
    {
    boolean _result=true;//定义个变量用来记录是否是合数,默认为质数
    for(int j=2;j<=Math.sqrt(i);j++)
    {//因为求质数话,有个快捷方法,如果从2到n^1/2都不能被整除,那该数一定是质数
    if(i%j==0)
    {//出现这种情况的话,说明i为合数.
    _result=false;//合数,设置为false
    break;//跳出第二层循环
    }
    }

    /**质数,打印出来*/
    if(_result)
    System.out.println(i);
    }
      

  3.   

    public class ZhiShu { public static void main(String[] args) {
    boolean flag=false;
    for(int i=2;i<100;i++){
    flag=true;
    for(int j=2;j<=(int)Math.sqrt(i);j++){
    if(i%j==0){
    flag=false;
    break;
    }
    }
    if(flag)
    System.out.print(i+" ");
    }
    }}
      

  4.   

    声明了类型还是出错了
    Exception in thread "main" java.lang.NoClassDefFoundError: day02/java
      

  5.   

    筛选法,通过删除所有比较小的质数的倍数来找到质数,只能求到1亿以内的质数,因为超过1亿boolean数组会超出内存而溢出
    public class ZhiShu{
    public static void main(String[] args) {
      int n = 10000;
      boolean[] a = new boolean[n + 1];
      long start = System.currentTimeMillis();
      int num = 0;
      for (int i = 2; i <= n; i++)
       a[i] = true;
      for (int i = 2; i <= Math.sqrt(n); i++) {
       if (a[i])
        for (int j = 2*i; j<= n; j+=i)
         a[j ] = false;
      }
      for (int i = 0; i <= n; i++) {
       if (a[i]) {
        System.out.print(i + " ");
        ++num;
        if (num % 50 == 0)
         System.out.println();
       }
      }
     long  end = System.currentTimeMillis();
      System.out.println();
      System.out.println(num);
      System.out.println("耗时:" + (end - start) + " ms");
     }
    }