【原理】
1)设n为要分解的整数,i为除数,i的初始值为最小的质数2
2)判断i和n是否相等,若相等则直接输出n
3)若i和n不相等,继续判断i是否能整除n,若能整除则输出i,同时令n为i除n的商,循环判断。若不能则i++,返回第2)
1.递归法
void Decomp(int n, int i)
{
if (i == n)
{
printf("%d", n);
return;
}
else
{
if (n%i == 0)
{
printf("%d*", i);
n = n / i;
Decomp(n, i);
}
else
{
Decomp(n, i + 1);
}
}
}
int main()
{
int n;
scanf("%d", &n);
printf("\n%d=",n);
Decomp(n, 2);
return 0;
}
【测试结果】
2.循环法
void Decom(int n)
{
int i = 2;
printf("%d=", n);
while (1)
{
if (i == n)
{
printf("%d", i);
break;
}
while (n%i == 0)
{
printf("%d*", i);
n = n / i;
}
i++;
}
}