http://acm.timus.ru/problem.aspx?space=1&num=1049质因子分解:题意明显,注意如果全部相乘会很大,所以得一个一个质因子分解然后做乘法,一边乘最好一边模10,以免溢出:
#include<stdio.h>
#include<string.h>
#include<math.h>
int prime[5000],f[10010],tot;
int main()
{
int i,j,t,ans;
memset(f,0,sizeof(f));
f[1]=1;
i=1;tot=0;
while (i<10000)
{
while (f[i]&&i<10000) i++;
t=i;
tot++;
prime[tot]=i;
while (t<10000)
{
f[t]=1;
t=t+i;
}
}
tot--;
memset(f,0,sizeof(f));
for (i=1;i<=10;i++)
{
scanf("%d",&t);
j=1;
while (t>1&&j<=tot)
{
while (t%prime[j]==0)
{
t=t/prime[j];
f[j]++;
}
j++;
}
}
ans=1;
for (i=1;i<=tot;i++)
if (f[i])
ans=(ans*(f[i]+1));
printf("%d\n",ans);
return 0;
}
质因子分解当然筛法嘛,没得说。smy sb写了好几个程序我就只给他改了一点点就ac了,不写程序不行啊,不敲代码的弱爆了!