目录
1 题目2 分析3 实现4 运行结果1 题目
将一个正整数分解质因数。例如:输入909090,打印出 90=2∗3∗3∗590 = 2 * 3 * 3 * 590=2∗3∗3∗5
2 分析
分解质因数的思路就是用该数n
不断除以一个递增的数i
(该数初始为2
,递增至n
)若能整除i
,则当前i
就为n
的因子之一,然后将n
用该因子缩小,即n=n/i
再重复执行上述操作,若n = i
则说明分解因子结束了
3 实现
#include <stdio.h>int main() {int n ;printf("请输入一个正整数:");scanf("%d", &n);printf("%d = ", n);for (int i = 2; i <= n; i++) {while(n != i) {// 执行的条件必须是n与i不等,若相等则分解结束了if(n % i == 0) {// 若能整除则i为n的因子之一printf("%d * ", i); // 输出因子n = n / i; // 找到了一个因子i,则n/i缩小n继续寻找} else {break; // 不能整除则跳出本次循环,递增i进行下一轮}}}printf("%d\n", n); // 最后剩下的n不能整除i,所以它也为因子之一,所以最后输出return 0;}
4 运行结果
请输入一个正整数:10 = 2 * 2 * 2 * 3 * 5