hdu 2824 The Euler function--筛法欧拉函数


在百度百科学的,,本来源代码有bug,还编辑了一下百度百科。。这东西果然不靠谱。。

#include<stdio.h>
#include<string.h>
#define N 1000005
#define ll long long
int prime[N];
ll phi[N];
ll sum[N];

void dabiao()
{
	int i,j,k;
	memset(prime,0,sizeof(prime));
	for(i=2;i*i<N;i++)
		if(!prime[i])
			for(j=i*i;j<N;j+=i)
				prime[j]=1;
	for(i=1;i<N;i++)
		phi[i]=i;
	for(i=2;i<N;i++)
		if(!prime[i])
			for(j=i;j<N;j+=i)
				phi[j]=phi[j]/i*(i-1);
	sum[1]=1;
	for(i=2;i<N;i++)
		sum[i]=sum[i-1]+phi[i];
}
int main()
{
	dabiao();
	int i,j,k;
	int a,b;
	while(~scanf("%d%d",&a,&b))
		printf("%lld\n",sum[b]-sum[a-1]);
}


阅读更多
文章标签: 数论 模板
个人分类: 数论 模板
上一篇hdu 2136 Largest prime factor----类似筛素数的方法
下一篇同余模方程--BIT 1053 Han Xin Count Soldiers
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭