首页 > 其他 > 详细

HDU 2824 The Euler function 题解

时间:2014-06-29 22:49:02      阅读:441      评论:0      收藏:0      [点我收藏+]

求区间的euler数值,自然使用筛子法了。

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

#include <stdio.h>

const int MAX_SZIE = 3000001;
__int64 phi[MAX_SZIE] = {0};
void eulerPhi()
{
	for (int i = 2; i < MAX_SZIE; i++)
	{
		if (!phi[i])
		{
			for (int j = i; j < MAX_SZIE; j += i)
			{
				if (!phi[j]) phi[j] = j;
				phi[j] = phi[j] / i * (i - 1);
			}
		}
	}
	for (int i = 3; i < MAX_SZIE; i++)
	{
		phi[i] += phi[i-1];
	}
}

int main()
{
	eulerPhi();
	int a, b;
	while (scanf("%d %d", &a, &b) != EOF)
	{
		printf("%I64d\n", phi[b] - phi[a-1]);
	}
	return 0;
}


HDU 2824 The Euler function 题解,布布扣,bubuko.com

HDU 2824 The Euler function 题解

原文:http://blog.csdn.net/kenden23/article/details/35784531

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!