/*
* 【程序4】 题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。
* 1.程序分析:对n进行分解质因数,应先找到一个最小的质数i,然后按下述步骤完成:
* (1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。 (2)如果n >
* i,但n能被i整除,则应打印出i的值,并用n除以i的商,作为新的正整数你,重复执行第一步。
* (3)如果n不能被i整除,则用i+1作为i的值,重复执行第一步。
*/
@Test
public void primeDecompositionTest() {
int num = 90;
StringBuffer primeDecomposition = primeDecomposition(num);
System.out.println(primeDecomposition);
}
/**
* 将一个正整数分解质因数
*
* @param num
* @return
*/
public StringBuffer primeDecomposition(int num) {
StringBuffer result = new StringBuffer();
result.append(num);
result.append("=");
int k = 2;// 最小的质数
if (num <= k) {
result.append(num);
return result;
}
while (num > k) {// 初值k为2,num为输入的数字,在程序执行的过程中k渐渐变大(k++),n渐渐变小(num/k)
if (num % k == 0) {
result.append(k);// 如果num <> k,但n能被k整除,则应打印出k的值
result.append("*");
num = num / k;// num除以k的商,作为新的正整数你num
} else if (num % k != 0) {
k++;
}
}
result.append(k);
return result;
}
}
打印结果: