【发布时间】: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 之外的所有质数。所以素数平方不是唯一的情况。