gcd(数论)
题目描述
给定整数N,求1<=x,y<=N且Gcd(x,y)为素数的数对(x,y)有多少对?
输入
一个整数
1<=N<=1000000
输出
一个整数
样例输入
4
样例输出
4
提示
【样例解释】
(2,2),(2,4),(3,3),(4,2)
其实是做过的,我们知道,欧拉函数就是找在n以内与n互质的数,那么我们这样思考,设有一个数是x是在y范围以内与y互质的,就一定满足:
gcd(y , x) = 1
那么,如果我们同时将n乘上一个素数,如3,则就一定有:
gcd( 3*y , 3*x ) = 3
那么只要保证y*3不大于n,那么y及其y以内的数都可以满足咯,所以最后的答案就是:
其中pn为n以内质数个数,prime存的是质数。
为什么要乘2呢,因为反过来也是一种情况
为什么要加1呢?因为(n/prime[i] , n/prime[i])也是一种情况,但是只能算一遍,且欧拉函数算的是小于n/prime[i]的
可以用前缀和
代码:
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
using namespace std;
int n ;
#define ll long long
const int MAXN = 1e7 + 3;
int prime[MAXN] , pn;
ll phi[MAXN];
bool vis[MAXN];
void pr(){
for( int i = 2 ; i <= n ; i ++ ){
if( !vis[i] ){
prime[++pn] = i;
phi[i] = i - 1;
}
for( int j = 1 ; j <= pn && 1ll * i * prime[j] <= n ; j ++ ){
vis[i*prime[j]] = 1;
if( i % prime[j] == 0 ){
phi[i*prime[j]] = phi[i] * prime[j];
break;
}
phi[i*prime[j]] = phi[i] * ( prime[j] - 1 );
}
}
for( int i = 2 ; i <= n ; i ++ )
phi[i] = phi[i] + phi[i-1];
}
int main(){
scanf( "%d" , &n );
pr();
ll ans = 0;
for( int i = 1; i <= pn ; i ++ ){
ans = ans + phi[n/prime[i]] * 2 + 1;
}
printf( "%lld" , ans );
return 0;
}
---------------------
作者:BIT_jzx
原文:https://blog.csdn.net/weixin_43823476/article/details/89077146
gcd(数论)的更多相关文章
- Bash and a Tough Math Puzzle CodeForces 914D 线段树+gcd数论
Bash and a Tough Math Puzzle CodeForces 914D 线段树+gcd数论 题意 给你一段数,然后小明去猜某一区间内的gcd,这里不一定是准确值,如果在这个区间内改变 ...
- [Swust OJ 1125]--又见GCD(数论,素数表存贮因子)
题目链接:http://acm.swust.edu.cn/problem/1125/ Time limit(ms): 1000 Memory limit(kb): 65535 Descriptio ...
- BZOJ 4305: 数列的GCD( 数论 )
对于d, 记{ai}中是d的倍数的数的个数为c, 那么有: 直接计算即可,复杂度O(NlogN+MlogM) --------------------------------------------- ...
- hdu 4983 Goffi and GCD(数论)
题目链接:hdu 4983 Goffi and GCD 题目大意:求有多少对元组满足题目中的公式. 解题思路: n = 1或者k=2时:答案为1 k > 2时:答案为0(n≠1) k = 1时: ...
- 【bzoj2818】: Gcd 数论-欧拉函数
[bzoj2818]: Gcd 考虑素数p<=n gcd(xp,yp)=p 当 gcd(x,y)=1 xp,yp<=n满足条件 p对答案的贡献: 预处理前缀和就好了 /* http://w ...
- UVA 10951 - Polynomial GCD(数论)
UVA 10951 - Polynomial GCD 题目链接 题意:给定两个多项式,求多项式的gcd,要求首项次数为1,多项式中的运算都%n,而且n为素数. 思路:和gcd基本一样,仅仅只是传入的是 ...
- bzoj 2818 GCD 数论 欧拉函数
bzoj[2818]Gcd Description 给定整数N,求1<=x,y<=N且Gcd(x,y)为素数的数对(x,y)有多少对. Input 一个整数N Output 如题 Samp ...
- luoguP1029 最大公约数和最小公倍数问题 [gcd][数论]
题目描述 输入二个正整数x0,y0(2<=x0<100000,2<=y0<=1000000),求出满足下列条件的P,Q的个数 条件: 1.P,Q是正整数 2.要求P,Q以x0为 ...
- BZOJ 2820: YY的GCD | 数论
题目: 题解: http://hzwer.com/6142.html #include<cstdio> #include<algorithm> #define N 100000 ...
随机推荐
- SpringCloud微服务实战——搭建企业级开发框架(四十二):集成分布式任务调度平台XXL-JOB,实现定时任务功能
定时任务几乎是每个业务系统必不可少的功能,计算到期时间.过期时间等,定时触发某项任务操作.在使用单体应用时,基本使用Spring提供的注解即可实现定时任务,而在使用微服务集群时,这种方式就要考虑添 ...
- C语言- 基础数据结构和算法 - 动态数组
听黑马程序员教程<基础数据结构和算法 (C版本)>,照着老师所讲抄的, 视频地址https://www.bilibili.com/video/BV1vE411f7Jh?p=1 喜欢的朋友可 ...
- Spring框架系列(5) - 深入浅出SpringMVC请求流程和案例
前文我们介绍了Spring框架和Spring框架中最为重要的两个技术点(IOC和AOP),那我们如何更好的构建上层的应用呢(比如web 应用),这便是SpringMVC:Spring MVC是Spri ...
- RPA-UiPath视频教程2
UiPath参数的介绍和使用 https://www.bilibili.com/video/av83343849 UiPath第一个案例HelloWorld https://www.bilibili. ...
- BetterScroll源码阅读顺便学习TypeScript
开头 TypeScript已经出来很多年了,现在用的人也越来越多,毋庸置疑,它会越来越流行,但是我还没有用过,因为首先是项目上不用,其次是我对强类型并不敏感,所以纯粹的光看文档看不了几分钟就心不在焉, ...
- NC14301 K-th Number
NC14301 K-th Number 题目 题目描述 Alice are given an array A[1..N] with N numbers. Now Alice want to build ...
- 使用 Abp.Zero 搭建第三方登录模块(三):网页端开发
简短回顾一下网页端的流程,总的来说网页端的职责有三: 生成一个随机字符作为鉴权会话的临时Token, 生成一个小程序码, Token作为参数固化于小程序码当中 监控整个鉴权过程状态,一旦状态变为AU ...
- HBase学习(一) 基本概念和安装基本命令
HBase学习(一) 一.了解HBase 官方文档:https://hbase.apache.org/book.html 1.1 HBase概述 HBase 是一个高可靠性.高性能.面向列.可伸缩的分 ...
- 跟我读论文丨Multi-Model Text Recognition Network
摘要:语言模型往往被用于文字识别的后处理阶段,本文将语言模型的先验信息和文字的视觉特征进行交互和增强,从而进一步提升文字识别的性能. 本文分享自华为云社区<Multi-Model Text Re ...
- c++小游戏--五子棋
大家好,我是芝麻狐! 这是我自制的小游戏,目前仅支持devc++. 如果你没有c++软件, 请打开网站GDB online Debugger | Compiler - Code, Compile, R ...