public class 质数与质因子 {
//判断是否为质数
public static boolean is_prime(int n) {
if (n < 2) {
return false;
} for(int i=2;i*i<=n;i++){会溢出
for (int i = 2; i <= n / i; i++) {
if (n % i == 0) {
return false;
}
}
return true;
}
//求100以内的质数
public static List<Integer> sum_prime(int n) {
ArrayList<Integer> list = new ArrayList<>();
for (int i = 2; i <= n; i++) {
if (is_prime(i)) {
list.add(i);
}
}
return list;
}
//求质数的最小质因子,格式为“100=2*2*5*5”
public static void prime_disassemble(int n) {
int flag=0;
for(int i=2;i<=n;i++){
if(n%i==0){
while(n%i==0){
if(flag==0){
flag=1;
System.out.print(i);
}else{
System.out.print("*"+i);
}
n/=i;
}
}
}
}
//求集合内是质数的最小质因子
public static void prime_disassemble2(List<Integer> list) {
for(Integer n:list){
if(!is_prime(n)){
System.out.print(n+"=");
prime_disassemble(n);
System.out.println();
}
}
}
//要求有返回值为String
public static String prime_disassemble3(int n) {
StringBuilder builder = new StringBuilder();
builder.append(n+"=");
int flag=0;
for(int i=2;i<=n;i++){
if(n%i==0){
while(n%i==0){
if(flag==0){
flag=1;
builder.append(i);
}else{
builder.append("*"+i);
}
n/=i;
}
}
}
return builder.toString();
}
public static void main(String[] args) {
prime_disassemble(3449);
System.out.println();
ArrayList<Integer> list = new ArrayList<>();
list.add(100);list.add(99);list.add(98);list.add(97);
prime_disassemble2(list);
System.out.println(prime_disassemble3(100));
}
质数判断与质因子的分解
最新推荐文章于 2024-08-11 20:00:32 发布