题目:
将一个正整数分解质因数。例如:输入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的值,重复执行第一步。
源代码:
// 导入Scanner类,用于接收用户输入
import java.util.Scanner;
// 定义一个名为FenJieZhiYinShu的公共类
public class FenJieZhiYinShu {
// 主函数
public static void main(String[] args) {
// 创建一个Scanner对象,用于接收用户输入
Scanner scanner = new Scanner(System.in);
// 提示用户输入一个整数
System.out.print("请输入一个整数:");
// 读取用户输入的整数
int num = scanner.nextInt();
// 输出用户输入的整数
System.out.print(num + " = ");
// 从2开始遍历到num,寻找质因数
for (int i = 2; i <= num; i++) {
// 当num能被i整除时,说明i是num的一个质因数
while (num % i == 0) {
// 如果num等于i,说明i是num的唯一质因数,直接输出i并换行
if (num == i) {
System.out.println(i);
}
// 否则,输出i和一个乘号,表示i是num的一个质因数
else {
System.out.print(i + " * ");
}
// 将num除以i,得到新的num
num = num / i;
}
}
}
}
算法思路:
- 首先,创建一个Scanner对象,用于接收用户输入的整数。
- 然后,提示用户输入一个整数,并读取用户输入的整数。
- 接下来,从2开始遍历到num,寻找质因数。
- 当num能被i整除时,说明i是num的一个质因数。
- 如果num等于i,说明i是num的唯一质因数,直接输出i并换行;否则,输出i和一个乘号,表示i是num的一个质因数。
- 将num除以i,得到新的num,继续寻找下一个质因数。