874. 筛法求欧拉函数

  • 题目
  • 代码

题目

给定一个正整数 n,求 1∼n 中每个数的欧拉函数之和。

输入格式
共一行,包含一个整数 n。

输出格式
共一行,包含一个整数,表示 1∼n 中每个数的欧拉函数之和。

数据范围
1≤n≤106
输入样例:
6
输出样例:
12

代码

#include <iostream>using namespace std;typedef long long LL;const int N = 1000010;
int primes[N], phi[N], cnt;
bool s[N];LL getPhiSum(int n){phi[1] = 1;// 线性筛法筛质数的过程中求每个被筛掉的数的欧拉函数for(int i = 2; i <= n; i++){if(!s[i]){primes[cnt++] = i;phi[i] = i-1;//如果i是质数,那么根据欧拉函数定义,1~(i-1)都跟质数i互质,则phi[i] = i-1}for(int j = 0; primes[j] <= n/i; j++){s[ primes[j] * i] = true;if(i % primes[j] == 0){phi[primes[j] * i] = primes[j] * phi[i];break;}phi[primes[j] * i] = (primes[j]-1) * phi[i];}}// 累加1~n中所有数的欧拉函数之和LL res = 0;for(int i = 1; i <= n; i++) res += phi[i];return res;
}int main()
{int n;cin >> n;cout << getPhiSum(n) << endl;return 0;
}

874. 筛法求欧拉函数相关推荐

  1. AcWing 874. 筛法求欧拉函数

    线性筛法求解欧拉函数 有关线性筛法的介绍,可以参考这道题:868. 筛质数 - AcWing题库 这道题y总采用了线性筛选法来筛选掉指定范围内的合数,筛选出质数.思维利用得极为巧妙. 结合y总讲解视频 ...

  2. AcWing 874. 筛法求欧拉函数(线性筛法求欧拉函数模板)

    给定一个正整数 n,求 1∼n 中每个数的欧拉函数之和. 输入格式 共一行,包含一个整数 n. 输出格式 共一行,包含一个整数,表示 1∼n 中每个数的欧拉函数之和. 数据范围 1≤n≤10^6 输入 ...

  3. AcWing 874. 筛法求欧拉函数(欧拉函数)

    题目链接 https://www.acwing.com/problem/content/876/ 思路 对于一个数x如果是质数,那么它的欧拉函数就为x−1x-1x−1,对于其他合数我们可以将其拆成最小 ...

  4. ~~筛法求欧拉函数(附模板题)

    模板 int primes[N], cnt; // primes[]存储所有素数 int euler[N]; // 存储每个数的欧拉函数 bool st[N]; // st[x]存储x是否被筛掉voi ...

  5. hdu2824(2009多校第一场) 线性筛法求欧拉函数

    欧拉函数指小于n且与其互质的数个数: phin=n*(1-1/p1)*(1-1/p2)*...(1-1/pn) 由此便可以利用类似筛素数筛出所有欧拉函数,具体看代码: 1 #include<st ...

  6. 【模板题】欧拉函数与线性筛求欧拉函数

    欧拉函数是什么? 定义:对于正整数nnn,欧拉函数是小于或等于nnn的正整数中与nnn互质的数的个数,记作φ(n)\varphi (n)φ(n). φ(1)=1\varphi (1)=1φ(1)=1. ...

  7. 线性筛法 与 线性求欧拉函数 的计算模板

    简介 懂得如何快速计算质数是十分重要的 在筛法的基础上,我们可以使用更为高级的线性筛法! 顾名思义,就是时间复杂度是线性的,即 O(N)O(N) ,N 为所求的质数范围 而对编程有所接触的人,应该都知 ...

  8. 如何求欧拉函数~转载

    三.欧拉函数 请思考以下问题: 任意给定正整数n,请问在小于等于n的正整数之中,有多少个与n构成互质关系?(比如,在1到8之中,有多少个数与8构成互质关系?) 计算这个值的方法就叫做欧拉函数,以φ(n ...

  9. ~~求欧拉函数(附模板题)

    模板 int phi(int x) {int res = x;for (int i = 2; i <= x / i; i ++ )if (x % i == 0){res = res / i * ...

最新文章

  1. Floyd算法实验报告
  2. linux 自动ping脚本,linux上ping脚本及zabbix3.xx上自动发现
  3. oracle游标错误,ORACLE游标与错误处理
  4. cocos2d-x的Android工程开启c++0x特性
  5. Java SE、Java EE、Java ME三者的区别
  6. resultMap与resultType、parameterMap与 parameterType的区别
  7. 多目标遗传算法与优化的关系
  8. 彻底搞懂Scrapy的中间件(二)
  9. Kalman Filter 递归算法
  10. 电子书分页,翻页效果,字体大小调整和基本功能实现
  11. 实例:python 实现有向图找环(反洗钱、资金流)
  12. boder sizing:boder-box的使用意义
  13. 一篇短文让你彻底理解什么是串口通信
  14. Linux chrome/firefox flash过期问题解决办法
  15. 使用gimp批量处理图片
  16. Ubuntu 设置桥接网络
  17. 搜索引擎(转自百度百科)
  18. ESP8266连接手机
  19. 虚拟机不正常关机,到时无法进入文本界面
  20. 矩阵求逆引理(Matrix Inversion Lemma)的意义

热门文章

  1. SMSC2021 Day9Day10 部分题解
  2. PS基础——自由变换
  3. 慕测平台环境配置教程
  4. 3ds Max学习日记(五)
  5. 有关modelsim/Questa Sim中出现蓝线高阻态(Z)的问题解决
  6. ISACA与南京审计大学合作一周年,“ISACA南审校园日”在宁举行
  7. Windows程序设计--画几何图形
  8. C/C++线程绑核详解
  9. 陈新春老师--沪师经纪刘建
  10. pstree命令的用法(查看进程树)