质因数分解
输入一个int型十进制正整数,将其分解为质因素的幂的积,要求表示为质因数从小到大顺序排列的乘积形式。例如:90=2*3ˆ2*5
#include <cstdio>
int main()
{
int n;
scanf("%d", &n);
printf("%d = ", n);
int b = n, k = 2, cnt; //k代表可能是n的约数,cnt代表每个约数的个数
while (k <= n)
{
cnt = 0;
while (b % k == 0)
{
cnt++;
b /= k;
}
if (cnt == 1)
{
if (b > 1) //如果因数个数为1,且还有因数
{
printf("%d*", k);
}
else if (b == 1) //如果因数个数为1,且没有因数
{
printf("%d", k);
break;
}
}
else if (cnt > 1)
{
if (b > 1) //如果因数个数大于1,且还有因数
{
printf("%d^%d*", k, cnt);
}
else if (b == 1) //如果因数个数大于1,且没有因数
{
printf("%d^%d", k, cnt);
break;
}
}
k++;
}
}