The Euler function
Time limit:2000/1000 MS (java/others) Memory limit:32768/32768 K (java/others)
Total submission (s): 6018 Accepted Submission (s): 2539
Problem Description
The Euler function phi is an important kind of function in number theory, (n) represents the amount of the numbers which a Re smaller than N and coprime to n, and this function have a lot of beautiful characteristics. Here comes a very easy question:suppose is given a, B, try to calculate (a) + (a+1) +....+ (b)
Input
There is several test cases. Each line has a integers a, b (2<a<b<3000000).
Output
Output The result of (a) + (a+1) +....+ (b)
Sample Input
3 100
Sample Output
3042
3000000 of the data range, did not expect to be directly added ... Contribute one MLE.
#include <stdio.h>#include<string.h>inteuler[3000010];voidEuler_sieve_method (int* Euler,intN) {euler[1] =1; for(inti =2; I < n; i++) {Euler[i]=i; } for(inti =2; I < n; i++) { if(Euler[i] = =i) { for(intj = i; J < N; J + =i) {euler[j]= Euler[j]/I * (i-1); } } }}intMain () {Euler_sieve_method (Euler,3000005); intA, B; while(SCANF ("%d%d", &a, &b)! =EOF) {__int64 s=0; for(inti = A; I <= b; i++) {s+=Euler[i]; } printf ("%i64d\n", s); } return 0;}
View Code
The Euler function[hdu2824]