ahu 350 分解因式

来源:互联网 发布:linux建立用户组 编辑:程序博客网 时间:2024/04/28 05:44

数论知识略微加一点贪心思想,主要是学好数学啊。。。
把一个数(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;}
0 0