質因數分解
輸入一個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++;
}
}