1210:因子分解
时间限制: 1000 ms 内存限制: 65536 KB
提交数: 7032 通过数: 4387
【题目描述】
输入一个数,输出其素因子分解表达式。
【输入】
输入一个整数 n (2≤n<100)。
【输出】
输出该整数的因子分解表达式。
表达式中各个素数从小到大排列。
如果该整数可以分解出因子a的b次方,当b大于1时,写做 a^b
;当b等于1时,则直接写成a。
【输入样例】
60
【输出样例】
2^2*3*5
【分析】
样例数据60为例,从2开始判断,60可以整除2,则分解为2*30,再判断30,同样可以整除2,继续,2^2*15,15不能整除2,递归因子加1,判断15可以整除3,故2^2*3*5,因子加1,判断5不能整除4,继续,5能够整除5,且余数为1。递归实现上述模拟过程。
【参考代码】
#include<stdio.h>
void fact(int n,int a) //n待分解的数,a因子
{
int b=0;
if(n==0 || a>n)
return;
while(n%a==0)
{
b++;
n/=a;
}
if(b>=1)
{
if(b==1)
printf("%d",a);
else
printf("%d^%d",a,b);
if(n>a)
printf("*");
}
fact(n,a+1);
}
int main()
{
int n;
scanf("%d",&n);
fact(n,2);
return 0;
}
http://ybt.ssoier.cn:8088/problem_show.php?pid=1210