将一个正整数分解质因数。例如:输入888,打印出888=2*2*2*3*37。
程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:
如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。
如果n>k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n,重复执行第一步。
如果n不能被k整除,则用k+1作为k的值,重复执行第一步。
代码实现:
#include <stdio.h>
int main(){
int n; // 用户输入的整数
int i; // 循环标志
printf("输入一个整数:");
scanf("%d",&n);
printf("%d=",n);
// n>=2才执行下面的循环
for(i=2; i<=n; i++){
while(n!=i){
if(n%i==0){
printf("%d*",i);
n=n/i;
}else
break;
}
}
printf("%d\n",n);
return 0;
}
运行结果:
linuxidc@linuxidc:~/www.linuxidc.com$ ./linuxidc.com
输入一个整数:888
888=2*2*2*3*37
linuxidc@linuxidc:~/www.linuxidc.com$ ./linuxidc.com
输入一个整数:999
999=3*3*3*37
Linux公社的RSS地址:https://www.linuxidc.com/rssFeed.aspx