分解质因数
题目描述:
每个非素数(合数)都可以写成几个素数(也可称为质数)相乘的形式,
这几个素数就都叫做这个合数的质因数。编写程序将一个正整数分解质因数
输入描述:
输入一个正整数n(2<n<1000)
输出描述:
形如a*b*b*c,质因数按照从小到大的顺序排列
输入样例:
90
输出样例:
2*3*3*5
//输入正整数n
//遍历n以内的所有整数
//找出其质因数
//同时求出其重复的数字
//输出为乘积形式
#include<stdio.h>
int prime(int a){ //用于判断素数的函数
int i;
if(a == 2){
return 2;
}else{
for(i = 2; i<a ; i++){
if(a % i == 0){
return 0;
}
}
return a;
}
}
int main(){
int n,a;
int d = 1;
scanf("%d",&n); //注意2<n<1000 别输入2
a = n; //用a记录n的值
for(int i = 2;i<n;i++){ //从小到大输出只能用++ ,不能用--
if(prime(i) == i){
//遍历n以内的所有质数
for(;;){
if(a % i == 0){ //i为n的质因数
printf("%d",i);
a /= i; //a等于a/i的结果,用于计算重复质因数;
d *= i; //d记录每个质因数的乘积
//printf("%d\n",d);
if(d != n){ //用if语句避免在最后一个质因数后面不输出'*'
printf("*");
}
}else if(a % i != 0){
break;
}
}
}
if(d == n){
break; //及时跳出循环优化运算
}
}
return 0;
}
这是我发布的第一篇博客,希望我同诸位一起成长。