1998-c-二
算法思想: 输入一个数x,将其对n取余(n从2开始),如果余数为零,m=m/n,重复操作。如果余数不为零,n++,直到找到能够被其整除的数。
非递归算法
#include <stdio.h>
int main()
{
int n, i, c;//需要分解的自然数
scanf("%d", &n);
i = 2; c = n;
printf("%d=", n);
while(n != 1)
{
if(n%i == 0) {
printf("%s%d", c == n ? "" : "*", i);
n /= i;
} else ++i;
}
}
递归算法实现
#include <stdio.h>
void num_break(int c,int n,int i)
{
if(n!=1)//n==1,证明分解完毕
{
if(n%i==0)
{
printf("%s%d", c == n ? "" : "*", i);
n/=i;
num_break(c,n,i);
}
else
num_break(c,n,++i);
}
}
int main()
{
num_break(140,140,2);
}