您的位置:首页 > 其它

pku2603--Brave balloonists

2008-11-08 22:48 351 查看
运用下面这个方法

若正整数n可分解为p1^a1*p1^a2*…*pk^ak

其中pi为两两不同的素数,ai为对应指数

n的约数个数为(1+a1)*(1+a2)*….*(1+ak)


要好好学数学了。

统计各个素数的个数(存放在数组里),然后相乘并可得到个数

代码如下:

#include<stdio.h>

#include<stdlib.h>

#include<string.h>

int main()

{

int x,i,n=10;int a[10002];a[1]=0;memset(a,0,sizeof(a));

while(n--)

{

scanf("%d",&x);

for(i=2;x!=1;i++)

{

while(x%i==0&&x!=1)

{

a[i]++;x/=i;

}

if(x==1)

break;

}

}

x=1;

for(i=2;i<10000;i++)

{

if(a[i]!=0)

{

x=x*(1+a[i])%10;

}

}

printf("%d\n",x);

return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: