用JAVA中递归思想编写程序:分解质因数例如90=2×3×3×5

2024-11-21 21:03:43
推荐回答(4个)
回答1:

按照你的要求编写的Java程序如下:

import java.util.Scanner;
public class CCT{
 public static void f(int n,int m){
  int i=2;
  if(n<2)return;
  while(!(n%i==0)){
   i++;
  }
  if(m==1)System.out.print(i);
  else System.out.print("*"+i);
  f(n/i,m-1);
  return;
 }
 public static void main(String[] args) {
  Scanner sc=new Scanner(System.in);
  int n=sc.nextInt();
  System.out.print(n+"=");
  f(n,1);
  System.out.println();
 }
}

运行结果:

90
90=2*3*3*5

回答2:

老了老了,想了好久 ,仅供参考....

package march;

import java.util.ArrayList;
import java.util.Scanner;

public class PrimeNumber {
static ArrayList prime_list=new ArrayList();
static boolean isParme=false;
public static void main(String[] args) {
Scanner in =new Scanner(System.in);
int number=Integer.parseInt(in.nextLine().toString());
dealNum(number);
if(!isParme){
System.out.println("该数为质数,无质因数");
}else{
System.out.println(prime_list);
}
}
/*
 * 处理数据
 * */
public static void dealNum(int number){
int primeNumber=1;
//判断并寻找质因数
for (int i = 2; i < number; i++) {
if(number%i==0){    //为合数
isParme=true;
primeNumber=i;
prime_list.add(i);
//判断他是不是质数
int new_prime=number/primeNumber;
if(isPrime(new_prime)){
dealNum(new_prime);
}else{
prime_list.add(new_prime);
}
break;
}
}
}
//仅仅判断找到的质因数  是否为质数
public static boolean isPrime(int number){
boolean isPrime=false;
for (int i = 2; i < number; i++) {
if(number%i==0){      //为合数
isPrime=true;
break;
}
}
return isPrime;
}

}

回答3:

public static List execute(int x, ArrayList contents){
    for(int i = 2; i <= x ; i++){
        if (x % i == 0){
            contents.add(i);
            execute(x / i, contents);
            break;
        }
    }
    return contents;
}

回答4:

递归、再递归 。。。。。。。。