分解质因数(递归与非递归的方法)
#include<stdio.h>
#include<stdlib.h>
int data[20],j=0;
int prim(int n)
{
int i;
for(i=2;i*i<=n;i++)
{
if(n%i==0)
return 0;
}
return 1;
}
void f(int n,int i)
{
if(i>n) //注意条件
return;
else
{
if(prim(i)==1 && n%i==0)
{
data[j++]=i;
f(n/i,i);
}
else
f(n,i+1);
}
}
int main()
{
int n,i;
scanf("%d",&n);
f(n,2);
/*
int n,i=2,m,data[50],j=0;
scanf("%d",&m);
n=m;
while(m!=1) //注意条件
{
if(prim(i)==1 && m%i==0)
{
data[j++]=i;
m=m/i;
}
else
i++;
}
*/
printf("%d=%d",n,data[0]);
for(i=1;i<j;i++)
printf("*%d",data[i]);
printf("\n");
system("pause");
return 0;
}