当前位置: 代码迷 >> Java相关 >> 一路分解质因数的题目,不知道哪里出错了
  详细解决方案

一路分解质因数的题目,不知道哪里出错了

热度:53   发布时间:2016-04-22 20:00:02.0
一道分解质因数的题目,不知道哪里出错了
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);
}
}
}
}
  相关解决方案