Java 给定一个数n,返回真是n的所有因子都是素数。请注意,1和数字本身不被视为因素
样本输出#1 样本输入#2 样本输出#2 样本输入#3 样本输出#3Java 给定一个数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); 系统输出打印项次(结果); } 公
我想这就是你想要达到的目标
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;
}
}