题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。
程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:
(1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。
(2)如果n <> k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你,重复执行第一步。
程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:
(1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。
(2)如果n <> k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你,重复执行第一步。
(3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。
package wzs.arithmetics;
// 题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。
// 程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:
// (1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。
// (2)如果n <> k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你,重复执行第一步。
// (3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。
public class Test_wzs4
{
public static void main(String[] args)
{
Test_wzs4.f(90);
}
/**
* 分解质因数
* @param n
*/
public static void f(int number)
{
if (number <= 0)
{
System.out.println("请输入一个正数.");
return;
}
for (int i = 2; i < number / 2; i++)
{
if (number % i == 0)
{
System.out.print(i + "*");
f(number / i);
}
}
System.out.println(number); // 打印最后一个质因数
System.exit(0); // 退出系统,去掉则出错,因为代码是层层包含,嵌套的.
}
}