您的位置:首页 > 其它

HDU 2824 The Euler function 欧拉函数

2013-12-15 11:57 323 查看
欧拉函数裸题,直接上代码:

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<algorithm>
#include<iostream>
#include<vector>
using namespace std;
#define MAX 3000100
int p[MAX],ans[MAX];
bool a[MAX];
int A,B;
int main()
{
//freopen("input.in","r",stdin);
//freopen("output.out","w",stdout);
int num=0;
for(int i=2;i<=3000001;i++)
{
if(!a[i])
{
p[num++]=i;
ans[i]=i-1;
}
for(int j=0;j<num && p[j]*i<=3000001;j++)
{
a[p[j]*i]=true;
if(!(i%p[j]))
{
ans[i*p[j]]=ans[i]*p[j];
break;
}
else  ans[i*p[j]]=ans[i]*(p[j]-1);
}
}
while(scanf("%d%d",&A,&B)!=EOF)
{
__int64 ans1=0;
for(int i=A;i<=B;i++)
ans1=ans1+ans[i];
printf("%I64d\n",ans1);
}
//system("pause");
return 0;
}


 

转载注明出处:http://blog.csdn.net/u011400953

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