将一个正整数分解成多个素数因子(可重复)的乘积。
解题思路:
从小到大,利用埃氏筛的思想,变遍历,边记录,复杂度O(1)。
代码
#include<stdio.h>
int main()
{
int n;
//输入一个数,将其分解成素因子
scanf("%d",&n);
while(n)
{
static int flag = 1;
int i;
for(i = 2;i <= n;i++)
{
int factor_num = 0;
while(1)
{
if(n%i == 0)
{
factor_num++;
n/=i;
}
else
break;
}
if(flag)
{
if(factor_num > 1)
{
printf("%d^%d",i,factor_num);
flag = 0;
}
else if(factor_num == 1)
{
printf("%d",i);
flag = 0;
}
}
else
{
if(factor_num > 1)
{
printf("*%d^%d",i,factor_num);
}
else if(factor_num == 1)
{
printf("*%d",i);
}
}
}
}
return 0;
}