874. 筛法求欧拉函数
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. 筛法求欧拉函数相关推荐
- AcWing 874. 筛法求欧拉函数
线性筛法求解欧拉函数 有关线性筛法的介绍,可以参考这道题:868. 筛质数 - AcWing题库 这道题y总采用了线性筛选法来筛选掉指定范围内的合数,筛选出质数.思维利用得极为巧妙. 结合y总讲解视频 ...
- AcWing 874. 筛法求欧拉函数(线性筛法求欧拉函数模板)
给定一个正整数 n,求 1∼n 中每个数的欧拉函数之和. 输入格式 共一行,包含一个整数 n. 输出格式 共一行,包含一个整数,表示 1∼n 中每个数的欧拉函数之和. 数据范围 1≤n≤10^6 输入 ...
- AcWing 874. 筛法求欧拉函数(欧拉函数)
题目链接 https://www.acwing.com/problem/content/876/ 思路 对于一个数x如果是质数,那么它的欧拉函数就为x−1x-1x−1,对于其他合数我们可以将其拆成最小 ...
- ~~筛法求欧拉函数(附模板题)
模板 int primes[N], cnt; // primes[]存储所有素数 int euler[N]; // 存储每个数的欧拉函数 bool st[N]; // st[x]存储x是否被筛掉voi ...
- hdu2824(2009多校第一场) 线性筛法求欧拉函数
欧拉函数指小于n且与其互质的数个数: phin=n*(1-1/p1)*(1-1/p2)*...(1-1/pn) 由此便可以利用类似筛素数筛出所有欧拉函数,具体看代码: 1 #include<st ...
- 【模板题】欧拉函数与线性筛求欧拉函数
欧拉函数是什么? 定义:对于正整数nnn,欧拉函数是小于或等于nnn的正整数中与nnn互质的数的个数,记作φ(n)\varphi (n)φ(n). φ(1)=1\varphi (1)=1φ(1)=1. ...
- 线性筛法 与 线性求欧拉函数 的计算模板
简介 懂得如何快速计算质数是十分重要的 在筛法的基础上,我们可以使用更为高级的线性筛法! 顾名思义,就是时间复杂度是线性的,即 O(N)O(N) ,N 为所求的质数范围 而对编程有所接触的人,应该都知 ...
- 如何求欧拉函数~转载
三.欧拉函数 请思考以下问题: 任意给定正整数n,请问在小于等于n的正整数之中,有多少个与n构成互质关系?(比如,在1到8之中,有多少个数与8构成互质关系?) 计算这个值的方法就叫做欧拉函数,以φ(n ...
- ~~求欧拉函数(附模板题)
模板 int phi(int x) {int res = x;for (int i = 2; i <= x / i; i ++ )if (x % i == 0){res = res / i * ...
最新文章
- Floyd算法实验报告
- linux 自动ping脚本,linux上ping脚本及zabbix3.xx上自动发现
- oracle游标错误,ORACLE游标与错误处理
- cocos2d-x的Android工程开启c++0x特性
- Java SE、Java EE、Java ME三者的区别
- resultMap与resultType、parameterMap与 parameterType的区别
- 多目标遗传算法与优化的关系
- 彻底搞懂Scrapy的中间件(二)
- Kalman Filter 递归算法
- 电子书分页,翻页效果,字体大小调整和基本功能实现
- 实例:python 实现有向图找环(反洗钱、资金流)
- boder sizing:boder-box的使用意义
- 一篇短文让你彻底理解什么是串口通信
- Linux chrome/firefox flash过期问题解决办法
- 使用gimp批量处理图片
- Ubuntu 设置桥接网络
- 搜索引擎(转自百度百科)
- ESP8266连接手机
- 虚拟机不正常关机,到时无法进入文本界面
- 矩阵求逆引理(Matrix Inversion Lemma)的意义