3、将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。
程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:
(1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。
(2)如果n <> k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n,重复执行第一步。
(3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。
class judge{
public int num=1;
public void step1(int n,int k){
System.out.print(n+'=');
if (n==k)
{
if(num==1){
System.out.print(k);
}
}
if(n!=k){
if (num>1) {
System.out.print('*'+k);
}
}
if(n%k==0){
System.out.print('*'+k);
n=n/k;
}
judge b=new judge();
b.step2(n,k);
num++;
}
public void step2(int n,int k){
if(n%k!=0){
k=k+1;
num++;
}
else{
judge c=new judge();
c.step3(n,k);
}
}
public void step3(int n,int k){
judge a=new judge();
num++;
a.step1(n,k);
}
}
public class PrimeNumber {
public static void main(String args[]){
int n=10;
int k=2;
{
judge d=new judge();
d.step1(n, k);
}
}
}
------解决思路----------------------
刚才发的有点问题,又只能3连,换个号发
去掉了最下边的n==1的判断,因为当n==k的时候才会出现n/k==1,但是上边n==k的时候已经返回了

public class PrimeNumber {
public static void main(String args[]) {
int n = 54;
int k = 2;
System.out.print("n=");
judge(n, k);
}
public static void judge(int n, int k) {
/*
* 其他情况,比如 k不能大于n, k不能为0 这些也可以判断一下
*/
if (k > n
------解决思路----------------------
k == 0) {
System.out.println("这样是不能算的!");
return;
}
if (n == k) {
System.out.print(k);
return;
} else {
if (n % k != 0) {// 不能被整除
judge(n, k + 1);
} else {
n = n / k;
System.out.print(k + "*");
judge(n, k);
}
}
}
}