【问题标题】: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给定一个数 n,如果 n 的所有因数都是素数,则返回 true。请注意,1 和数字本身不被视为因素
【发布时间】:2015-07-30 13:34:33
【问题描述】:
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

【问题讨论】:

  • 每个数都有一个素数因式分解,该数的所有因式将是该因式分解及其所有乘积的素数。似乎所有因子都是素数的唯一情况是数字是素数的平方。
  • 请清除我的疑问,5 和 7 是质数,但 5*7 = 35(35 的因数是 1,5,7,35)所以它具有除 1 和 35 之外的所有质数。所以素数平方不是唯一的情况。

标签: java primes


【解决方案1】:

我认为这就是你想要实现的目标!

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;
            }
}

如果您有超过 2 个除 1 之外的素因子,则逻辑非常简单,这意味着您至少有 1 个复合因子,即 prime1*prime2。

【讨论】:

    猜你喜欢
    • 2020-07-18
    • 1970-01-01
    • 2017-01-29
    • 1970-01-01
    • 1970-01-01
    • 2016-06-18
    • 2011-04-08
    • 2011-05-27
    相关资源
    最近更新 更多