当前位置: 代码迷 >> 编程 >> 9度OJ 教程56 约数的个数(感谢炮神的约数公式)
  详细解决方案

9度OJ 教程56 约数的个数(感谢炮神的约数公式)

热度:1545   发布时间:2013-02-26 00:00:00.0
九度OJ 教程56 约数的个数(感谢炮神的约数公式)

题目地址:http://ac.jobdu.com/problem.php?cid=1040&pid=55


//九度OJ 教程56 约数的个数(感谢炮神的约数公式)//http://ac.jobdu.com/problem.php?cid=1040&pid=55//leizh007大神的约数公式,借鉴写的代码,感谢炮神#include <stdio.h>#define MAXS 100004int mark[MAXS]={0},count=0;long prime[MAXS];int main(){	long i,j,k,n,ans,a;	for(i=2;i<MAXS;i++)	{		if(mark[i])continue;		prime[++count]=i;		for(j=i*i;j<MAXS;j+=i)mark[j]=1;	}	while(~scanf("%ld",&n))	{		for(i=1;i<=n;i++)//纯粹为了读n次数,没实际用处。		{			ans=1;			scanf("%ld",&a);			for(j=1;j<count;j++)			{				k=1;				while(a%prime[j]==0)				{					k++;					a/=prime[j];				}				ans*=k;//牛的必然牛,排列吧组合吧!				if(a==1)break;			}			if(a!=1)ans*=2;//牛的必然牛,防止另一个素数的出现。			printf("%ld\n",ans);		}	}	return 0;}


  相关解决方案