求欧拉函数,欧拉函数就是求 欧拉函数的定义:E(k)=([1,n-1]中与n互质的整数个数).
#include <iostream>
#include <cstdio>
const int maxn=3000005;
__int64 a[maxn];
void init()
{
int i,j;
for(i=1; i<maxn; i++)
a[i]=i;
for(i=2; i<maxn; i++)
{
if(i==a[i])
{
for(j=i; j<maxn; j+=i)
a[j]=(a[j]/i)*(i-1);
}
}
}
int main()
{
init();
int n,m,i;
while(scanf("%d%d",&n,&m)!=EOF)
{
__int64 sum=0;
int temp;
if(n>m)
{
temp=n;
n=m;
m=temp;
}
for(i=n; i<=m; i++)
sum+=a[i];
printf("%I64d\n",sum);
}
return 0;
}
注意要用__int64 位,否则不能过!