数论知识略微加一点贪心思想,主要是学好数学啊。。。
把一个数(n<100000000)分解成质数相乘形式
#include<stdio.h>
#include<string.h>
#include<math.h>
#include<stdlib.h>
int main()
{
int i,j,k,n,s,n1,i1;
while(scanf("%d",&n)!=EOF)
{
n1=n;
s=0;
i=2;
while(n%i==0)
{
s=1;
n/=i;
if(n==1)printf("%d\n",i);
else printf("%d ",i);
}
i=3;
for(;i<=(int)(sqrt(n1));i+=2)
{
if(n%i==0)
{
s=1;
while(n%i==0)
{
n/=i;
if(n==1)printf("%d\n",i);
else printf("%d ",i);
}
}
}
if(s==0)printf("%d\n",n1);
else
{
if(n1/n<n)printf("%d\n",n);
else
{
for(;i<=n;i+=1)
{
if(n%i==0)
{
while(n%i==0)
{
n/=i;
if(n==1)printf("%d\n",i);
else printf("%d ",i);
}
break;
}
}
}
}
}
return 0;
}