Java 给定一个数n,返回真是n的所有因子都是素数。请注意,1和数字本身不被视为因素

Java 给定一个数n,返回真是n的所有因子都是素数。请注意,1和数字本身不被视为因素,java,primes,Java,Primes,样本输出#1 样本输入#2 样本输出#2 样本输入#3 样本输出#3 我想这就是你想要达到的目标 false import java.util.*; 导入java.lang.*; 导入java.io.*; 公共类AllFactorsArePrime{ 公共静态void main(字符串[]args){ AllFactorsaReprome obj=新的AllFactorsaReprome(); 布尔结果=obj.areAllFactorsPrime(32); 系统输出打印项次(结果); } 公

样本输出#1

样本输入#2

样本输出#2

样本输入#3

样本输出#3


我想这就是你想要达到的目标

false
import java.util.*;
导入java.lang.*;
导入java.io.*;
公共类AllFactorsArePrime{
公共静态void main(字符串[]args){
AllFactorsaReprome obj=新的AllFactorsaReprome();
布尔结果=obj.areAllFactorsPrime(32);
系统输出打印项次(结果);
}
公共布尔区域因子素数(int n){
整数计数=0;
int j=0;
双k=n;
而(n%2==0){
n=n/2;
j=2;
计数++;
}
对于(int i=3;i=3)
{
返回false;
}
其他的
返回true;
}
}

如果有2个以上的素数因子(不包括1),则逻辑非常简单,这意味着至少有1个复合因子,即prime1*prime2。

每个数字都有一个素数分解,该数字的所有因子都将是该分解的素数及其乘积。似乎所有因子都是素数的唯一情况是当一个数是素数的平方时。请澄清我的疑问,5和7是素数,但5*7=35(35的因子是1,5,7,35),所以它有除1和35之外的所有素数因子。所以素数的平方不是唯一的情况。
areAllFactorsPrime(22)
true 
areAllFactorsPrime(25)
true
areAllFactorsPrime(32)
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;
            }
}