码迷,mamicode.com
首页 > 其他好文 > 详细

hdu2824 The Euler function 筛选法求欧拉函数模板题

时间:2015-05-29 20:24:48      阅读:109      评论:0      收藏:0      [点我收藏+]

标签:

//求a , b范围内的所有的欧拉函数
//筛选法求欧拉函数模板题
#include<cstdio>
#include<cstring>
#include<iostream>
using namespace std ;
const int maxn = 3000010 ;
typedef __int64 ll ;
int e[maxn] ;
int a ,  b ;
void Euler()
{
    int i,j;
    for (i=1;i<maxn;i++) e[i]=i;
    for (i=2;i<maxn;i++)
        if (e[i]==i)  // 当e[i] == i时,可以发现i即为素数
        {           
            e[i]=i-1;
            for (j=i*2;j<maxn;j+=i) e[j]=e[j]/i*(i-1);
        }
}
int main()
{
    Euler() ;
    while(~scanf("%d%d" , &a , &b))
    {
        ll ans = 0 ;
        for(int i = a ;i <= b;i++)
        ans += (ll)e[i] ;
        printf("%I64d\n" , ans) ;
    }
    return 0 ;
}

hdu2824 The Euler function 筛选法求欧拉函数模板题

标签:

原文地址:http://blog.csdn.net/cq_pf/article/details/46239597

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!