import java.io.*;
public class MathEx {
        
    /**
     * Creates a new instance of <code>MathEx</code>.
     */
    public static void checkPrime(int num){
     boolean isPrime=true;
     int i=0;
     for(i=2;i<=Math.sqrt(num);i++){
     if(num%i==0)
     {isPrime=false;
     break;}
     if(isPrime)
     System.out.println(num+"是质数");
     else
     System.out.println(num+"不是质数");
     }
    }
    public MathEx() {
    }
    
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) throws Exception{
        // TODO code application logic here
        System.out.print("请输入1个整数:");
        InputStreamReader isr=new InputStreamReader(System.in);
        BufferedReader br=new BufferedReader(isr);
        int num=Integer.parseInt(br.readLine());
        br.close();
        isr.close();
        MathEx.checkPrime(num);
    }
}结果:请输入1个整数:15
15是质数                         
这个是正确的,
但是如果输入16,16不是质数
结果:
请输入1个整数:16Process completed
为什么不输出“16不是质数”呢?

解决方案 »

  1.   

    15是质数? 你知不知道什么是质数啊,不能被从2开始到开方的任一数整除(2除外),15能被3整除啊
    import java.io.*;
    public class MathEx {
            
        /**
         * Creates a new instance of <code>MathEx</code>.
         */
        public static void checkPrime(int num){
            boolean isPrime=true;
            int i=0;
            for(i=2;i<=Math.sqrt(num);i++){
                if(num%i==0)
                {isPrime=false;
                break;}
                
            }
            if(isPrime)
                System.out.println(num+"是质数");
            else
                System.out.println(num+"不是质数");
        }
        public MathEx() {
        }
        
        /**
         * @param args the command line arguments
         */
        public static void main(String[] args) throws Exception{
            // TODO code application logic here
            System.out.print("请输入1个整数:");
            InputStreamReader isr=new InputStreamReader(System.in);
            BufferedReader br=new BufferedReader(isr);
            int num=Integer.parseInt(br.readLine());
            br.close();
            isr.close();
            MathEx.checkPrime(num);
        }
    }
      

  2.   

    先不说你质数判断的对或不对。 当你得出isPrime = false;之后,有一个break; 这就是为什么不打印“不是质数”,因为还没打印就跳出了。
    程序帮你稍微改了一下public class PrimeTest { /**
     * Creates a new instance of <code>MathEx</code>.
     */
    public static void checkPrime(int num) {
    boolean isPrime = true;
    int i = 0;
    for (i = 2; i < num; i++) {
    if (num % i == 0) {
    isPrime = false;
    break;
    }
    }
    if (isPrime)
    System.out.println(num + "是质数");
    else
    System.out.println(num + "不是质数");
    } /**
     * @param args
     *            the command line arguments
     */
    public static void main(String[] args) throws Exception {
    if (args.length < 1) {
    System.out.println("A number is required to run this program.");
    } int num = Integer.parseInt(args[0]);
    PrimeTest.checkPrime(num);
    }
    }