最大公约数

最大公约数

给定整数 $N$,求 $1 leq x,y leq N$ 且 $text{GCD}(x,y)$ 为素数的数对 $(x,y)$ 有多少对。

$text{GCD}(x,y)$ 即求 $x$,$y$ 的最大公约数。

输入格式

输入一个整数 $N$。

输出格式

输出一个整数,表示满足条件的数对数量。

数据范围

$1 leq N leq {10}^{7}$

输入样例:

4

输出样例:

4

 

解题思路

  直接枚举$(x, y)$是不可取的,如果定义一种映射关系$(x, y) stackrel{f}{longrightarrow} p$,其中$p$是质数。因此当数对$(x, y)$的最大公约数为质数就满足这个映射关系。可以发现自变量很多,而因变量很少,因此考虑能不能来枚举因变量来求自变量的个数。

  枚举$1 sim N$种的每一个质数$p$,如果有$gcd(x, y) = p$,那么有$gcd(frac{x}{p}, frac{y}{p}) = 1$。记$x' = frac{x}{p}$,$y' = frac{y}{p}$,满足$1 leq x', y' leq leftlfloor {frac{N}{p}} rightrfloor$。因此问题从在$1 sim N$中有多少个$(x, y)$的$gcd(x, y) = p$变成了在$1 sim leftlfloor {frac{N}{p}} rightrfloor$中有多少个$(x, y)$的$gcd(x, y) = 1$,就是 可见的点的模型。

最大公约数

  因此对于质数$p$,所要求的$(x, y)$的个数为$s_p = 2 cdot sumlimits_{i = 2}^{leftlfloor {frac{N}{p}} rightrfloor}{varphi(i)} + 1$。因此总的答案就是$sumlimits_{text{不超过N的质数}p}{s_p}$。因此还需要对$varphi(i)$求一个前缀和。

  AC代码如下:

 1 #include <bits/stdc++.h>
 2 using namespace std;
 3 
 4 typedef long long LL;
 5 
 6 const int N = 1e7 + 10;
 7 
 8 int primes[N], cnt;
 9 bool vis[N];
10 int phi[N];
11 LL s[N];
12 
13 void get_prime(int n) {
14     // phi[1] = 1    // 这题中定义phi(1)=0
15     for (int i = 2; i <= n; i++) {
16         if (!vis[i]) primes[cnt++] = i, phi[i] = i - 1;
17         for (int j = 0; primes[j] <= n / i; j++) {
18             vis[primes[j] * i] = true;
19             if (i % primes[j] == 0) {
20                 phi[primes[j] * i] = phi[i] * primes[j];
21                 break;
22             }
23             phi[primes[j] * i] = phi[i] * (primes[j] - 1);
24         }
25     }
26 }
27 
28 int main() {
29     int n;
30     cin >> n;
31     get_prime(n);
32     for (int i = 1; i <= n; i++) {  // 对phi[i]求前缀和
33         s[i] = s[i - 1] + phi[i];
34     }
35     LL ret = 0;
36     for (int i = 0; i < cnt; i++) {
37         ret += 2 * s[n / primes[i]] + 1;
38     }
39     cout << ret;
40     
41     return 0;
42 }

 

参考资料

  AcWing 220. 最大公约数(算法提高课):https://www.acwing.com/video/695/

原文链接: https://www.cnblogs.com/onlyblues/p/17063977.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

    最大公约数

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/313483

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
adminadmin
0 0
第三周总结报告
上一篇 2023年2月16日 下午12:54
樱花
下一篇 2023年2月16日 下午12:55

相关推荐

  • WT8.0安装 2023年2月8日
  • 第13课 进阶面向对象(上) 2023年4月3日
  • linux驱动杂谈2_drive present 2023年4月26日
  • CentOS7从零配置-持续更新 2023年3月2日
  • C++设计模式-Observer观察者模式 2023年2月10日
  • eclipse linux svn 中文乱码 2023年2月9日
  • 12.8K

    我是职场上失宠的妃子

  • C++性能真的不如C吗?

    7.2K
  • 大话数据结构 高清PDF

    6.7K
  • string底层实现之SSO

    6.3K
  • 千百撸

    4.4K
  • GDB调试-从入门实践到原理

    3.7K
  • 什么是COM

    3.7K
  • std::string底层实现之COW(Copy-On-Write)

    3.6K
  • 智能指针-使用、避坑和实现

    3.6K
  • 彻底搞通TCP send和recv原理

    3.4K

聚圣源女宝宝起名诗经楚辞唐诗土石方公司起什么名字好红梅花开青岛往事中国文明网官网小孩起名规则不可思议的生物描写人物外貌的成语免费电影中心起名与五行属猪孩子起名大全宜用字水杨酸的作用给宝宝起个吉利的名字小月牙宝宝起名网小名大全图书馆起名字2012年nba总冠军夏男孩起名大全天蝎座是几月几号到几月几号生日男孩水木组合起名字海产公司起名参考熟食连锁店免费男宝宝起名20207画字的哪些起名字用首选dns公司起名财源广进回看射雕处托管晶爱丽楚辞夜瑾全文免费阅读淀粉肠小王子日销售额涨超10倍罗斯否认插足凯特王妃婚姻让美丽中国“从细节出发”清明节放假3天调休1天男孩疑遭霸凌 家长讨说法被踢出群国产伟哥去年销售近13亿网友建议重庆地铁不准乘客携带菜筐雅江山火三名扑火人员牺牲系谣言代拍被何赛飞拿着魔杖追着打月嫂回应掌掴婴儿是在赶虫子山西高速一大巴发生事故 已致13死高中生被打伤下体休学 邯郸通报李梦为奥运任务婉拒WNBA邀请19岁小伙救下5人后溺亡 多方发声王树国3次鞠躬告别西交大师生单亲妈妈陷入热恋 14岁儿子报警315晚会后胖东来又人满为患了倪萍分享减重40斤方法王楚钦登顶三项第一今日春分两大学生合买彩票中奖一人不认账张家界的山上“长”满了韩国人?周杰伦一审败诉网易房客欠租失踪 房东直发愁男子持台球杆殴打2名女店员被抓男子被猫抓伤后确诊“猫抓病”“重生之我在北大当嫡校长”槽头肉企业被曝光前生意红火男孩8年未见母亲被告知被遗忘恒大被罚41.75亿到底怎么缴网友洛杉矶偶遇贾玲杨倩无缘巴黎奥运张立群任西安交通大学校长黑马情侣提车了西双版纳热带植物园回应蜉蝣大爆发妈妈回应孩子在校撞护栏坠楼考生莫言也上北大硕士复试名单了韩国首次吊销离岗医生执照奥巴马现身唐宁街 黑色着装引猜测沈阳一轿车冲入人行道致3死2伤阿根廷将发行1万与2万面值的纸币外国人感慨凌晨的中国很安全男子被流浪猫绊倒 投喂者赔24万手机成瘾是影响睡眠质量重要因素春分“立蛋”成功率更高?胖东来员工每周单休无小长假“开封王婆”爆火:促成四五十对专家建议不必谈骨泥色变浙江一高校内汽车冲撞行人 多人受伤许家印被限制高消费

聚圣源 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化