HDU 2824 The Euler function [欧拉函数]

来源:互联网 发布:易语言小游戏源码 编辑:程序博客网 时间:2024/05/16 07:20

Description

求区间[a, b]内所有数的欧拉函数之和

Algorithm

把每个欧拉函数求出来,然后累加,记录前面所有数的和,这样的话会更快,当然,不记录也没有什么关系

Code

#include <iostream>#include <cstring>using namespace std;const int maxb = 3000009;__int64 f[maxb] = {0, 1};void init(){  for (int i = 2; i < maxb; i++)    if (f[i] == 0)      for (int j = i; j < maxb; j += i)      {        if (f[j] == 0) f[j] = j;        f[j] = (f[j] / i) * (i - 1);      }  for (int i = 1; i < maxb; i++)    f[i] += f[i - 1];}int main(){  init();  int a, b;  while (cin >> a >> b) cout << f[b] - f[a - 1] << endl;  return 0;}
0 0
原创粉丝点击