簡體   English   中英

給定數字n,則返回true就是n的所有因子都是質數。 請注意,1和數字本身不視為因素

[英]Given a number n, return true is all the factors of n are prime numbers. Note that 1 and the number itself are not considered as factors

public class AllFactorsArePrime {

public static void main(String[] args) {
    AllFactorsArePrime obj = new AllFactorsArePrime();
    boolean result = obj.areAllFactorsPrime(8);
    System.out.println(result);
}

public boolean areAllFactorsPrime(int n) {

        int j=0;
        double k=n;
        while(n%2==0){
        n=n/2;
        j=2;
        }

        for(int i=3; i<=n;i=i+2){
        while(n%i==0){
        n=n/i;
        j=i;
        }
        }

        if(j==0 ){
        return 1;
         }
        return j;
        }

上面的代碼返回了主要因素,但是返回應該是對還是錯。有什么建議嗎? 樣本輸入#1

areAllFactorsPrime(22)

樣本輸出#1

true 

樣本輸入2

areAllFactorsPrime(25)

樣本輸出2

true

樣本輸入#3

areAllFactorsPrime(32)

樣本輸出3

false

我認為這就是您要實現的目標!

import java.util.*;
import java.lang.*;
import java.io.*;

public class AllFactorsArePrime {
    public static void main(String[] args) {
        AllFactorsArePrime obj = new AllFactorsArePrime();
        boolean result = obj.areAllFactorsPrime(32);
        System.out.println(result);
    }

    public boolean areAllFactorsPrime(int n) {
            int count=0;
            int j=0;
            double k=n;
            while(n%2==0){
            n=n/2;
            j=2;
            count++;
            }

            for(int i=3; i<=n;i=i+2){
            while(n%i==0){
            n=n/i;
            j=i;
            count++;
            }
            }

           if(count>=3)
           {
               return false;
           }
           else
               return true;
            }
}

如果除1之外有2個以上素數,則邏輯很簡單,這意味着您至少有1個復合素,即prime1 * prime2。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM