【BZOJ2818】Gcd,数论练习之欧拉筛
传送门
写在前面:比较简单的数论题目了
思路:对i来说,所有与i互质的数和i都乘同一个质数p,那么得到的两个数的gcd一定是p,所以我们就可以利用这个来搞一搞了,对1-n的phi预处理出来(欧拉筛),然后i从1-n枚举,j从1-prime[0](prmie[0]为质数个数)只要i*prime[j]不超过n就加到答案里就可以了
注意:当i=1时,phi只用加一次,但是其他情况就有相对的数对(x,y)与(y,x),所以phi要加2次
代码:
#include"bits/stdc++.h"
#define Maxn 10000000
using namespace std;
int n,phi[Maxn+1],prime[Maxn];
bool pd[Maxn+1];
long long ans;
main()
{scanf("%d",&n);phi[1]=1;for (int i=2;i<=n;i++){if (!pd[i])prime[++prime[0]]=i,phi[i]=i-1;for (int j=1;j<=prime[0];j++){if (prime[j]*i>n) break;pd[prime[j]*i]=1;if (i%prime[j]==0) {phi[i*prime[j]]=phi[i]*prime[j];break;}else phi[i*prime[j]]=phi[i]*phi[prime[j]];}}for (int i=1;i<=n;i++)for (int j=1;j<=prime[0];j++){if (prime[j]*i>n) break;ans+=phi[i];if (i!=1) ans+=phi[i];}printf("%lld",ans);
}
【BZOJ2818】Gcd,数论练习之欧拉筛相关推荐
- Enlarge GCD CodeForces - 1034A(欧拉筛+最大公约数)
题意: 给出n个数,删去其中一些使得总的gcd(最大公约数)最大 题目: Mr. F has n positive integers, a1,a2,-,an. He thinks the greate ...
- 欧拉筛(bzoj 2818: Gcd)
2818: Gcd Time Limit: 10 Sec Memory Limit: 256 MB Submit: 6707 Solved: 2952 [Submit][Status][Discu ...
- 欧拉筛 筛法求素数 及其例题 时间复杂度O(n)
埃式筛法尽管不错,但是确实做了许多无用功,某个数可能会被重复的筛好几次,欧拉筛解决了这个方法,下面为代码: 注意理解if(i%prim[j]==0) break; 大佬讲的不错的博客,我就不做复读机了 ...
- cf 1062d 思维 欧拉筛变形
http://codeforces.com/contest/1062/problem/D 题意:给个n ,在n之内 所有(a,b) ,如果存在唯一的x 使a*|x| == b 或者 b* |x| == ...
- 线性筛素数(欧拉筛)
欧拉筛是O(n)复杂度的筛素数算法,1秒内埃筛能处理1e6的数据,而1e7的数据就必须用欧拉筛了. 埃筛的基本思想是:素数的倍数一定是合数. 欧拉筛基本思想是:任何数与素数的乘积一定是合数 算法概述: ...
- 【数的专题】——欧拉筛
上题:https://www.luogu.org/problemnew/show/P3383 当你总是觉得筛质数太慢的时候,不妨来试一下欧拉筛: 基本原理: 设一个整数x,保证它只被它的最小质因子筛去 ...
- 素数筛选法(埃氏筛 欧拉筛)
质数筛选法 文章目录 质数筛选法 前言 一.埃氏筛 O(nloglogn)O(nloglogn)O(nloglogn) 二.欧拉筛O(n)O(n)O(n) 总结 前言 当需要大范围内的素数时,例如1e ...
- 埃氏筛 线性筛(欧拉筛) 算法解析
埃氏晒 埃拉托斯特尼筛法,简称埃氏晒,是一种用来求自然数n以内的全部素数. 他的基本原理是,如果我们要获得小于n的所有素数,那就把不大于根号n的所有素数的倍数剔除. 埃氏晒的原理很容易理解,一个合数, ...
- 素数的线性筛法java,埃氏筛 线性筛(欧拉筛) 算法解析
埃氏晒 埃拉托斯特尼筛法,简称埃氏晒,是一种用来求自然数n以内的全部素数. 他的基本原理是,如果我们要获得小于n的所有素数,那就把不大于根号n的所有素数的倍数剔除. 埃氏晒的原理很容易理解,一个合数, ...
最新文章
- 计算机导论简答芯片,吉大计算机 - 计算机导论简答题 (2011级)
- SetGet and MACRO
- Jyputer 项目工程设置Github同步,本地代码上传Github实例演示
- 字节跳动ClickHouse在用户增长分析场景的应用
- matplotlib-plot-绘制折线图
- Shell printf 命令
- 微信客户端<->腾讯微信服务器<->开发者服务器
- 如何集成Python代码和GUI来创建一个简单的游戏?
- [转载] Pytorch入门实战-----逻辑回归识别手写数据集
- android手机usb设置在哪里,手机usb调试在哪,教您安卓手机怎么打开USB调试
- 测试质量体系搭建--测试团队目标
- smoothstep(),平滑阶梯函数,平滑过渡函数
- 函数论_E.C.Tichmarsh_Page 4 级数一致收敛的魏尔斯特拉斯 M-判别法 的推广
- 吃土豆_nyoj_234(动态规划).java
- Halcon深度学习-目标检测-Rectangle1
- 有没有什么简单好用的录音软件?
- pytorch手写数字识别【源码实现-小清新版】
- 电子墨水屏标签:低功耗处理器技术
- java rgb转yuv_RGB,CMY(K),YUV,YIQ,YCbCr颜色的转换算法(java实现)
- 利用字典实现大侠个人信息查询程序
热门文章
- 单体应用微服务改造实践
- 火狐浏览器表单不跳转_坑爹火狐浏览器会记录表单数据,导致服务器控件点击事件出bug...
- 设计模式笔记二:抽象工厂模式
- Android笔记 意图传值demo
- ubuntu安装常用软件(比如python、搜狗拼音、cudnn等)
- chrome vue插件_不容错过的 Chrome 插件推荐合集-开发者必备篇
- thinkphp v5.0.11漏洞_thinkphp 5.0 代码执行漏洞
- 三次握手和四次挥手图解_详解 TCP 连接的“三次握手”与“四次挥手”
- php为什么查询语句加上order by就显示不出来,sql会查出结果 php页面偶尔显示空白 没有从sql得到结果...
- python温度转换代码_用python编写一个名为“convert_temp”的温度转换函数