HDU 2824 The Euler function【欧拉函数入门题】

来源:互联网 发布:c语言竖线是什么符号 编辑:程序博客网 时间:2024/05/17 22:23

The Euler function

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 5783    Accepted Submission(s): 2446


Problem Description
The Euler function phi is an important kind of function in number theory, (n) represents the amount of the numbers which are smaller than n and coprime to n, and this function has a lot of beautiful characteristics. Here comes a very easy question: suppose you are given a, b, try to calculate (a)+ (a+1)+....+ (b)
 

Input
There are several test cases. Each line has two integers a, b (2<a<b<3000000).
 

Output
Output the result of (a)+ (a+1)+....+ (b)
 

Sample Input
3 100
 

Sample Output
3042
 

Source
2009 Multi-University Training Contest 1 - Host by TJU

原题链接:http://acm.split.hdu.edu.cn/showproblem.php?pid=2824

欧拉函数:比它小的与它互素的数的个数。

入门题:不解释。

打表MLE!

AC代码:

#include <iostream>using namespace std;const int maxn=3000000+10;int phi[maxn];void Euler(){    for(int i=1;i<maxn;i++)        phi[i]=i;    for(int i=2;i<maxn;i++)        if(i==phi[i])//prime            for(int j=i;j<maxn;j+=i)                phi[j]=(phi[j]/i*(i-1));}int main(){    int a,b;    Euler();    while(cin>>a>>b)    {        __int64 ans=0;        for(int i=a;i<=b;i++)            ans+=phi[i];        cout<<ans<<endl;    }    return 0;}



0 0
原创粉丝点击