import java.util.Scanner;
public class Primes
{
    public void primes()
    {
       System.out.println("请输入一个整数:");
       Scanner sc = new Scanner(System.in);
       int a = sc.nextInt();
       for(int i=2;i<=a;i++)
       {                       
           for(int j=2;j<i;j++)
           {
               if(i%j==0)
               {
                   break;
               }
               else
               {
                   System.out.print(i+"\t");
                   break;
               }
           }
           
         }
    }
    public static void main(String args[])
    {
        Primes p = new Primes();
        p.primes();   
    }
}

解决方案 »

  1.   

    if(i%j==0)
      {
      break;
      }2%2 == 0;
      

  2.   

    你的j一直是2,就不可能增长,不管是if 里面还是else里面,都会break;所以j永远都是2;
      

  3.   

    package com.c813;import java.util.Scanner;public class Primes {
    public void primes() {
    System.out.println("请输入一个整数:");
    Scanner sc = new Scanner(System.in);
    int a = sc.nextInt();
    for (int i = 2; i <= a; i++) {
    boolean b = true;
    for (int j = 2; j < i; j++) {
    if (i == 2) {
    break;
    }
    if (i % j == 0) {
    b = false;
    }
    }
    if (b == true) {
    System.out.println(i + "  ");
    }
    }
    } public static void main(String args[]) {
    Primes p = new Primes();
    p.primes();
    }
    }这个是按照你的思想来的,建议寻找效率高一点算法。