当前位置:网站首页>874. 筛法求欧拉函数
874. 筛法求欧拉函数
2022-08-10 03:41:00 【Hunter_Kevin】
题目
给定一个正整数 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;
}
边栏推荐
猜你喜欢

2022华数杯思路分析

MindSpore官方RandomChoiceWithMask算子用例报错

The same is a primary test, why does he pay 5,000 yuan more than me?

Jackson的ObjectMapper在项目中的主要运用

matlab simulink响应谱计算

【mindspore产品】【8卡分布式训练】davinci_model : load task fail, return ret

2022年起重机械指挥操作证考试题库及模拟考试

Recommend several easy-to-use MySQL open source clients, it is recommended to collect

自定义训练,使用Generator dataset迭代数据报错

YAPI使用
随机推荐
基于Nonebot2的qq机器人如何测试超管账号
【2022河南萌新联赛第(五)场:信息工程大学】【部分思路题解+代码解析】
笔试题记录
文件操作【c语言】
数据切片问题
模型部署ONNX学习
【Verilog数字系统设计(夏雨闻)6-------模块的结构、数据类型、变量和基本运算符号2】
TCP协议之《Pacing功能》
电话自动拨号在电脑上自动拨打
测试常见问题100类(1)
Flink Table&Sql API使用遇到的问题总结
C语言结构体初识
最牛最全的 Postman 实现 API 自动化测试教程
MySQL数据库初体验
Classes and interfaces
快35了,还在“点点点”?那些入行几年的测试点工后来都怎么样了?
BFF避坑指南
多元函数的3D可视化,终于被我总结出来了,数学真是太美了
请问mindspore支持l1范数归一化吗
线程和线程间通信(C语言)