检查数字是素数还是复数的方法

时间:2017-04-30 14:43:22

标签: java algorithm methods composite

  public boolean isPrimeNum (int n) {
   boolean isPrime= true;
   for( int i=2; i<= n; i++) {
    if( n%i==0) {
     isPrime= false;
 }
isitPrime= true;

   if(isPrime)
    System.out.println("its a prime number");
   else
    System.out.println("its a composite number");   }

}

我试图写这个方法来检查数字是素数还是复数,但我不确定它是否正确。任何形式的帮助都将受到赞赏,并提前感谢。

3 个答案:

答案 0 :(得分:0)

这是您重构的代码。如果您有任何疑问,请随时发表评论。

class PrimeChecker { //Has to be in a class
      public boolean isPrimeNum(int n) {
          boolean isPrime=true;
          for (int i=2; i < n; i++) { //Has to be i < n instead of i <= n, every number can be divided by itself
              if (n%i==0) {
                 isPrime=false;
                 break; //Note you can break then
              }
          } //You were missing this
          //Removed : isitPrime= true; makes absolutely no sense 
          if(isPrime) {
             System.out.println("its a prime number");
             return true; //Breaks, you wont need else anymore
          } //You were missing these again
          System.out.println("its a composite number");
          return false;
     }
}

答案 1 :(得分:0)

你可以通过检查模数(%)直到&lt; =(n / 2)作为一个数字的最大因子(不包括它自己)总是小于或等于它的一半来使它有点(非常轻微)更高效,即,(int i = 2; i <= n / 2; i ++); 哦,分别检查2和3:)

答案 2 :(得分:-1)

您应该谷歌搜索此类问题。 但是,我正在回答一种寻找素数的优化方法

 private static boolean isPrimeNum(int n){
    if(n==2 || n==3) return true;
    if(n%2==0 || n%3==0) return false;

        for(int i=5;i<=Math.sqrt(n);i=i+2){
            if(n%i==0) return false;

        }
    return true;
}
相关问题