BZOJ 2818 Gcd 线性欧拉筛(Eratosthenes银幕)
标题效果:定整N(N <= 1e7),乞讨1<=x,y<=N和Gcd(x,y)素数的数(x,y)有多少.、
思考:推,。
建立gcd(x,y) = p,然后,x / p与y / p互素
问题就转化成了N / p中有多少个数互质,然后累加就能够了.
=>对于随意a,b,a <= N / p,b <= N / p,且a与b互质
=>gcd(a,b) == 1
如今问题就非常明显了。看到这个形式就非常easy想到欧拉函数。求一下phi,算一下前缀和,累加。
注意这里求欧拉一定要线性的,1qw的数据。nloglogn都非常悬。
CODE:
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
#define MAX 10000010
using namespace std;bool not_prime[MAX];
int prime[MAX],primes;
long long phi[MAX],ans;int n;inline void Eratosthenes();int main()
{cin >> n;Eratosthenes();for(int i = 2;i <= n; ++i)phi[i] += phi[i - 1];for(int i = 1;i <= primes; ++i)ans += phi[n / prime[i]];cout << (ans << 1) - primes << endl;return 0;
}inline void Eratosthenes()
{phi[1] = 1;for(int i = 2;i <= n; ++i) {if(!not_prime[i])prime[++primes] = i,phi[i] = i - 1;for(int j = 1;j <= primes && prime[j] * i <= n; ++j) {not_prime[i * prime[j]] = true;if(i % prime[j] == 0) {phi[i * prime[j]] = phi[i] * prime[j];break;}else phi[i * prime[j]] = phi[i] * (prime[j] - 1);}}
}
版权声明:本文博主原创文章。博客,未经同意不得转载。
BZOJ 2818 Gcd 线性欧拉筛(Eratosthenes银幕)相关推荐
- Sum of Consecutive Prime Numbers POJ - 2739(线性欧拉筛+尺取法)
题意: 一些正整数可以由一个或多个连续质数的总和表示.给定一个的正整数n,问满足条件的有多少种情况? 题目: Some positive integers can be represented by ...
- 欧拉筛(bzoj 2818: Gcd)
2818: Gcd Time Limit: 10 Sec Memory Limit: 256 MB Submit: 6707 Solved: 2952 [Submit][Status][Discu ...
- Enlarge GCD CodeForces - 1034A(欧拉筛+最大公约数)
题意: 给出n个数,删去其中一些使得总的gcd(最大公约数)最大 题目: Mr. F has n positive integers, a1,a2,-,an. He thinks the greate ...
- 【BZOJ2818】Gcd,数论练习之欧拉筛
传送门 写在前面:比较简单的数论题目了 思路:对i来说,所有与i互质的数和i都乘同一个质数p,那么得到的两个数的gcd一定是p,所以我们就可以利用这个来搞一搞了,对1-n的phi预处理出来(欧拉筛), ...
- 埃氏筛 线性筛(欧拉筛) 算法解析
埃氏晒 埃拉托斯特尼筛法,简称埃氏晒,是一种用来求自然数n以内的全部素数. 他的基本原理是,如果我们要获得小于n的所有素数,那就把不大于根号n的所有素数的倍数剔除. 埃氏晒的原理很容易理解,一个合数, ...
- 素数的线性筛法java,埃氏筛 线性筛(欧拉筛) 算法解析
埃氏晒 埃拉托斯特尼筛法,简称埃氏晒,是一种用来求自然数n以内的全部素数. 他的基本原理是,如果我们要获得小于n的所有素数,那就把不大于根号n的所有素数的倍数剔除. 埃氏晒的原理很容易理解,一个合数, ...
- 埃氏筛与欧拉筛(线性筛)
目录 一.前言 二.埃氏筛与欧拉筛(线性筛) 1.问题描述 2.基本思路 (1)埃氏筛法 (2)欧拉筛法 三.题例 1.上链接 2.简单思路 3.代码 (1)埃氏筛python版 (2)欧拉筛pyth ...
- 筛选质数,埃氏筛和欧拉筛(线性筛)
求len之内的所有的素数 除了比较常用的开根号的求法,还有两种更好的方法,埃氏筛和线性筛.其中埃氏筛更好理解,而线性筛(欧拉筛)不好理解但是更快. 埃氏筛 #include <bits/stdc ...
- 线性筛(欧拉筛)——算法解析
算法简介: 欧拉筛是一个能够做到O(n)O(n)O(n)的时间复杂度,也就是线性的质数筛法,是目前性能最优秀的质数筛法.在很多算法和数据结构题目中都有大量的应用,是一个十分基础的工具.对于一个频繁使用 ...
最新文章
- WEB应用之网页数据分析工具
- PHP中常见的提示对照表
- MongoDB:使用Spring数据添加计数器
- 云计算之路-阿里云上:用上了开放缓存服务OCS
- 时隔5年 三星要重回苹果闪存零部件供应商名单了
- 【疾病分类】基于matlab LBP果实病害检测分类【含Matlab源码 1714期】
- 中星9号新增测试频道_直播卫星新增中央卫视18套高清电视节目频道测试
- npm publish发布包时出现403错误no_perms Private mode enable, only admin can publish this module:
- 番茄助手Visual Assistx报错The security key for this program currently。。
- 泛微E-Office v9任意文件上传(CNVD-2021-49104)复现
- RGB色彩模式-最广的颜色系统之一
- Grafana Tempo简介
- DAOS 源码解析之 daos_pool
- 计算机领域,客观事物的属性,客观事物
- oracle创建用户,授权connect,resource后无法建表
- 知乎android客户端drawer布局探究
- 3D游戏的碰撞检测是如何实现的?
- 上海亚商投顾:沪指震荡反弹 游戏、传媒概念股再度大涨
- 公立计算机大学排名,全国公办软件工程大学排名
- python实现画小猪佩奇
热门文章
- linux创建redis容器,docker-compose实现redis部署及键值添加
- 敲的php代码怎么预览,php代码实现文件的预览
- linux查找项目中的问题,教你如何快速定位项目中慢查询[项目管理]
- 【硬件基础】个人感悟+C语言 引入头文件时引号括号的区别
- NLP学习 资料总结
- oracle library cache lock,【案例】Oracle等待事件library cache lock产生原因和解决办法...
- php变量 标签,html标签如何使用php中的变量
- root 123 mysql_MySQL常用命令
- CSS动画效果无限循环放大缩小
- H5画布不显示图片的问题解决