老师说这样写不对,让我用定义质数的那种算法!
我想问下我这种方法对不对!大虾们帮看下!
public class PrimeNumber {
int number; public void prime(){
if(number%2==0){
if(number==2){
System.out.print(number + "是质数!");
}
System.out.print(number + "不是质数!");
}else{
if(number<2){
System.out.print(number + "不是质数!");
}else{
if(number%3!=0&&number%5!=0&&number%7!=0||number==3||number==5||number==7){
System.out.print(number + "是质数!");
}else{
System.out.print(number + "不是质数!");
}
}
}
}}

解决方案 »

  1.   

    public boolean isPrime(int number){
    if(number<2){
    return false;
    }
    int end = (int)Math.sqrt(number);
    for(int i = 2;i<= end;i++){
    if(number%i==0){
    return false;
    }
    }
    return true;
    }
    1好像不是质数,多加点约束。
      

  2.   

    public class Test02
    {
        public static void main(String[] args)
        {
            System.out.println(prime(6));
        }
        
        public static boolean prime(int num)
        {
            if  (num <= 1)
            {
                return false;
            }
            
            int sqrt = (int)Math.sqrt(num);
            for(int i = 2;i <= sqrt;i++)
            {
                if (num%i == 0)
                {
                    return false;
                }
            }
            
            return true;
        }
    }
      

  3.   

    谢谢了,呵呵! 正确的刚写出来,了出来大家看看public class CirculatePrime {
    int number;
    public void cir(){
    boolean answer = false;
    for(int i=2;i<=(int)(Math.sqrt(number));i++){
    answer = false;
    if(number%i==0){
    if(number == 0){
    System.out.print(number + "不是质数!");
    break;
    }
    System.out.print(number + "不是质数!");
    break;
    }
    answer = true;
    }
    if(answer){
    System.out.print(number + "是质数!");
    }
    }}
      

  4.   

    将(int)(Math.sqrt(number))..放在循环外,有助于提升性能。