链接:https://www.nowcoder.com/acm/contest/141/H
来源:牛客网

Eddy has solved lots of problem involving calculating the number of coprime pairs within some range. This problem can be solved with inclusion-exclusion method. Eddy has implemented it lots of times. Someday, when he encounters another coprime pairs problem, he comes up with diff-prime pairs problem. diff-prime pairs problem is that given N, you need to find the number of pairs (i, j), where and are both prime and i ,j ≤ N. gcd(i, j) is the greatest common divisor of i and j. Prime is an integer greater than 1 and has only 2 positive divisors.

Eddy tried to solve it with inclusion-exclusion method but failed. Please help Eddy to solve this problem.

Note that pair (i1, j1) and pair (i2, j2) are considered different if i1 ≠ i2 or j1 ≠ j2.

输入描述:

Input has only one line containing a positive integer N.

1 ≤ N ≤ 10

7

输出描述:

Output one line containing a non-negative integer indicating the number of diff-prime pairs (i,j) where i, j ≤ N
示例1

输入

3

输出

2

示例2

输入

5

输出

复制

6

题意:输入一个n,n里面选一对数,满足这两个式子的数都是素数,不同顺序也算是另一对

思路:我们会发现i,j都是素数的话,那么最大公约数为1,那么肯定是一对,然后我们再想想(6,10),(6,9)...都是那么他们有什么规律呢,就是我们要使除了两个数的最大公约数之后都是素数,那么说明两个数分解之后就应该是 a=(素数)x*n  b=(素数)y*nn是最大公约数那么其他的满足这个条件对数其实就是一个素数对,同时乘以一个数那么也是,例如(2,3)那么(4,6)(6,9)(8,12)都是满足条件的数,那么我们应该怎么计算呢,下面我们讲个例子

首先想10以内有几个3的倍数呢,10/3=3个,这是常识那么我们就来计算,由所有的素数对扩展10以内的所有对,因为我们首先应该找出素数对,所以我们应该是遍历所有的素数,第一个 2 :10/2=5,10以内有5个2的倍数,我们再看2的前面有没有素数,没有,不计算第二个 3 :10/3=3  ....3 6 9,前面有素数2,我们就可以找到素数2组成(2,3),然后两个数同时乘以2,3,因为前面的小,所以我们始终能在6 9 前面找到4 6组成(4,6)(6,9)第三个:5...第四个:7...
 下面看代码实现
#include<bits/stdc++.h>
#define fi first
#define ll  long long
#define pll pair<int,int>
#define se second
#define mod 1000000007
using namespace std;
const int maxn = 10000010;
bool isPrime[maxn];
ll prime[maxn];
ll sum[maxn];
ll add[maxn];
ll total=0;
map< pll ,int> mp;
void makePrime2()//筛法找出所有的素数
{memset(isPrime,true,sizeof(isPrime));memset(prime,0,sizeof(prime));sum[1]=0;for(int i=2; i<maxn; i++){if(isPrime[i]){prime[total++]=i;sum[i]=sum[i-1]+1;//用于存当前位置有多少个素数}else sum[i]=sum[i-1];for(int j=0; j<total && i*prime[j]<maxn; j++){isPrime[i*prime[j]]=false;if(i%prime[j]==0) break;}}
}
int main()
{makePrime2();ll n;scanf("%lld",&n);ll ans=0;for(int i=0; i<total&&prime[i]<=n; i++){int p=n/prime[i];//找出n以内有多少个素数prime[i]的倍数ans+=(sum[prime[i]]-1)*p;//-1因为本身这个素数不算,然后和前面的素数进行匹配与扩展}printf("%lld\n",ans*2);
}

转载于:https://www.cnblogs.com/Lis-/p/9374618.html

牛客第三场多校 H Diff-prime Pairs相关推荐

  1. Gemstones(牛客第八场多校)

    链接:https://ac.nowcoder.com/acm/contest/888/G 来源:牛客网 Gromah and LZR have entered the seventh level. T ...

  2. 牛客第三场 F Popping Balloons —— 思维 + 搞题

    题目链接:点我啊╭(╯^╰)╮ 题目大意: 二维平面,nnn 个气球     要求水平方向射三枪,垂直射三枪     每一枪可以打穿一行或一列的所有气球     水平或垂直的相邻枪的距离为 rrr   ...

  3. 牛客网第九场多校联赛 E Music Game

    题目链接:https://www.nowcoder.com/acm/contest/147/E 题目大意:给出长度为n的序列a,表示每个点成功的概率,从1到n的分数计算方法是,若成功则获得连续成功的长 ...

  4. 牛客网暑期ACM多校训练营(第三场)

    牛客网暑期ACM多校训练营(第三场) A. PACM Team 01背包,输出方案,用bool存每种状态下用的哪一个物品,卡内存.官方题解上,说用char或者short就行了.还有一种做法是把用的物品 ...

  5. 牛客网暑期ACM多校训练营(第十场)F.Rikka with Line Graph

    牛客网暑期ACM多校训练营(第十场)F.Rikka with Line Graph 做法:\(G'\) 中的对应原图两条边(a,b) (c,d)的最短路为: \[ w[a][b] + w[c][d] ...

  6. 牛客网暑期ACM多校训练营(第九场)

    牛客网暑期ACM多校训练营(第九场) A. Circulant Matrix 做法:看到下标 \(xor\) 这种情况就想 \(FWT\),可是半天没思路,于是放弃了..其实这个 \(n\) 疯狂暗示 ...

  7. 牛客网暑期ACM多校训练营(第五场)

    牛客网暑期ACM多校训练营(第五场) A. gpa 二分答案,然后就转化为是否满足 \(\frac {\sum s[i]c[i]}{\sum s[i]} ≥ D\), \(\sum s[i]c[i] ...

  8. 牛客网暑期ACM多校训练营(第一场)

    牛客网暑期ACM多校训练营(第一场) A. Monotonic Matrix 考虑0和1的分界线,1和2的分界线,发现问题可以转化为两条不互相穿过的路径的方案数(可重叠),题解的做法就是把一条路径斜着 ...

  9. 牛客网暑期ACM多校训练营(第十场)D Rikka with Prefix Sum

    链接:https://www.nowcoder.com/acm/contest/148/D 来源:牛客网 题目描述 Prefix Sum is a useful trick in data struc ...

最新文章

  1. 编写里Linux命令解释器,linux基础教程试卷及答案
  2. 深度解析Java可变参数类型以及与数组的区别
  3. 关于javascript中的回调函数
  4. Burpsuite技巧之MD5加密密码爆破、带验证码爆破
  5. 上财的计算机专业408,【2020考研】上财408分经验分享
  6. Docker中安装Jenkins实时发布.net core 项目(二)
  7. 【2017年第1期】基于文本大数据的企业信用风险评估
  8. 再谈正态分布或高斯函数
  9. [译][Tkinter 教程15] event 事件绑定
  10. Java 开发人员必备的开发工具,这些没用进BAT想都别想
  11. GreenDao的学习和使用
  12. tomcat容器启动
  13. html文件用excel打开乱码,都是兼容惹的祸 用excel打开xls文件出现乱码的解决方法...
  14. 电子邮件群发工资条的方法
  15. win10电脑IIS服务器配置ASP环境
  16. html中如何把两行合并单元格,css合并两列单元格内容
  17. win10自带sftp服务器_win10开启sftp服务器
  18. 现在的 Linux 内核和 Linux 2.6 的内核有多大区别?
  19. 互联网日报 | 蔚来汽车股价年内涨幅近十倍;小米成立可穿戴部;恒大物业拟12月2日港交所上市...
  20. 一篇文章带你弄懂乐观锁与悲观锁,CAS原子性,synchronized底层原理

热门文章

  1. 超级无敌数字加密算法
  2. 为什么现在很小的孩子都会玩游戏,他们真的看得懂吗?
  3. 你生孩子的时候有什么神奇的经历吗?
  4. 穷的时候要记住这5点,才能有机会翻身
  5. 结合我的创业经历,有一下3点感受
  6. 32岁转行还来得及吗?
  7. 富人和穷人在面对同一件事情时
  8. 老程序员提给后浪程序员的职涯建议
  9. 为什么感觉每年手机都在升级CPU,但始终都会卡顿?
  10. 易懂分布式 | Kademlia算法