HDU1164大意如下,任何一个数都可以分解为若干个素数的乘积;也就是代数定理。
此题为一道水题,一次就AC了。首先可以利用素数够造一个素数表,之后将其素数因子挨个存储之后打印
#include"stdio.h"
int d[10000],count=0;
int prime(int n)
{
int i;
if(n!=2&&n%2==0||n!=3&&n%3==0||n!=5&&n%5==0||n!=7&&n%7==0)
return 0;
else
{
for(i=0;d[i]*d[i]<=n;i++)
if(n%d[i]==0)
return 0;
}
return n>1;
}
void initprime()
{
int i;
for(d[count++]=2,i=3;i<10000;i++)
{
if(prime(i))
d[count++]=i;
}
}
int main()
{
initprime();
int n,i,a[10000];
while(scanf("%d",&n)!=EOF)
{
int total=0;
for(i=0;d[i]*d[i]<=n;i++)
{
if(n%d[i]==0)
{
a[total++]=d[i];
n/=d[i];
while(n%d[i]==0)
{
a[total++]=d[i];
n/=d[i];
}
}
}
if(n>1)
a[total++]=n;
printf("%d",a[0]);
for(i=1;i<total;i++)
printf("*%d",a[i]);
printf("\n");
}
return 0;
}