题目:

给定整数N,求1<=x,y<=N且Gcd(x,y)为素数的
数对(x,y)有多少对.

输入:

一个整数N。

输出:

如题。

Sample  Input
4

Sample Output

4

Hint

对于样例(2,2),(2,4),(3,3),(4,2)

1<=N<=10^7

思路:

对于本题,因为是使得为质数,所以必然要枚举小于等于的质数,那么对于每一个质数

只需要求在区间中,满足有序对互质的对数。

也就是说,现在问题转化为:在区间中,存在多少个有序对使得互质,这个问题就简单啦,因为

是有序对,不妨设,那么我们如果枚举每一个,小于有多少个互素,这正是欧拉函数。所以

我们可以递推法求欧拉函数,将得到的答案乘以2即可,但是这里乘以2后还有漏计算了的,那么有哪些呢?

且为素数的情况,再加上就行了。

另外,在bzoj上好像空间限制的原因要用埃氏筛法筛质数,而在nyzoj上,数据点较大,最好用欧拉筛筛质数。

//nyzoj(乌市一中在线评测) www.nyzoj.com:5283 题目:blcup (10053)

代码如下:

//bzoj AC版:

#include<cstdio>
typedef long long ll;
const ll N=1e7+;
ll n,f[N],phi[N];
bool prime[N];
ll p[N],cnt;
void prework()
{
for (int i=;i<=n;i++) prime[i]=;
for (int i=;i<=n;i++)
{
if (prime[i])
{
p[++cnt]=i;
for (int j=i<<;j<=n;j+=i)
prime[j]=;
}
}
}
void Er()
{
for (int i=;i<=n;i++) phi[i]=i;
for (int i=;i<=n;i+=) phi[i]>>=;
for (int i=;i<=n;i+=)
{
if (phi[i]==i)
for (int j=i;j<=n;j+=i)
phi[j]=phi[j]-phi[j]/i;
}
f[]=;
for (int i=;i<=n;i++)
f[i]=f[i-]+(phi[i]<<);
}
ll solve()
{
ll ans=;
for (int i=;i<=cnt;i++)
{
ans+= + f[n/p[i]] ;
}
return ans;
}
int main()
{
scanf ("%lld",&n);
prework();
Er();
printf("%lld",solve());
return ;
}

//nyzoj AC 版:

#include<cstdio>
typedef long long ll;
const ll N=1e7+;
ll n,f[N],phi[N];
int v[N];
ll p[N],cnt;
void prework()
{
for (int i=;i<=n;i++)
{
if (v[i]==)
{
v[i]=i; p[++cnt]=i;
}
for (int j=;j<=cnt;j++)
{
if (p[j]>v[i] || p[j]>n/i) break;
v[i*p[j]]=p[j];
}
}
}
void Er()//递推求欧拉函数
{
for (int i=;i<=(n>>);i++) phi[i]=i;
for (int i=;i<=(n>>);i+=) phi[i]>>=;
for (int i=;i<=(n>>);i+=)
{
if (phi[i]==i)
for (int j=i;j<=(n>>);j+=i)
phi[j]=phi[j]-phi[j]/i;
}
f[]=;
for (int i=;i<=(n>>);i++)
f[i]=f[i-]+(phi[i]<<);
}
ll solve()
{
ll ans=;
for (int i=;i<=cnt;i++)
{
ans+= + f[n/p[i]] ;
}
return ans;
}
int main()
{
scanf ("%lld",&n);
prework();
Er();
printf("%lld",solve());
return ;
}

求解范围中 gcd(a,b)== prime 的有序对数的更多相关文章

  1. 利用python求解物理学中的双弹簧质能系统详解

    利用python求解物理学中的双弹簧质能系统详解 本文主要给大家介绍了关于利用python求解物理学中双弹簧质能系统的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧. 物理的 ...

  2. 给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组

    题目描述: 给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组. 说明:初始化 nums1 和 nums2 的元素数量分别为 m ...

  3. iOS开发中GCD在多线程方面的理解

    GCD为Grand Central Dispatch的缩写. Grand Central Dispatch (GCD)是Apple开发的一个多核编程的较新的解决方法.在Mac OS X 10.6雪豹中 ...

  4. 关于多线程中GCD的使用

    GCD 分为异步和同步 异步: ```objc  dispatch_async (  参数1  , {      } 同步: dispatch_sync( 参数1   , {   } ``` ###参 ...

  5. Swift中GCD与NSOperation相关

    GCD Swift 3必看:从使用场景了解GCD新API 常用写法: dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_ ...

  6. iOS中GCD的使用小结

    http://www.jianshu.com/p/ae786a4cf3b1 本篇博客共分以下几个模块来介绍GCD的相关内容: 多线程相关概念 多线程编程技术的优缺点比较? GCD中的三种队列类型 Th ...

  7. 为什么因式分解n=pq分别得到pq是求解密钥中d的关键

    从d的来源来说,它是这样来的: "找到一个数d,使得ed-1能够被z整除.即给定e,选择数d,使得ed被z除的余数为1",即  ed=1 (mod z) 上面这句话中,为了求d,我 ...

  8. 剑指 Offer 30. 包含min函数的栈 + 双栈实现求解栈中的最小值

    剑指 Offer 30. 包含min函数的栈 Offer_30 题目描述: 题解分析: 题目其实考察的是栈的知识,本题的目的是使用两个栈来求解最小值. 第二个栈主要用来维护第一个栈中的最小值,所以它里 ...

  9. C++求解数组中出现超1/4的三个数字。

    #include <iostream> using namespace std; //求x!中k因数的个数. int Grial(int x,int k) { int Ret = 0; w ...

随机推荐

  1. RGBA与半透明背景

    概念 所谓RGBA颜色,就是RGB三原色加ALPHA.在给背景加入颜色的同一时候.提供透明度特性. 用法 background:rgba(90,90, 54, 0.5); 支持情况 Firefox 3 ...

  2. linux 常用的17个性能指标

    1.Average load:Average number of processes simultaneously in Ready state during the last minute.   上 ...

  3. html5+css3实现手机下拉和下拉刷新

    <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...

  4. C​#​获​取​当​前​时​间​的​各​种​格​式

    C#获取当前时间的各种格式  DateTime.Now.ToShortTimeString()   DateTime dt = DateTime.Now;   dt.ToString();//2005 ...

  5. Hadoop DataNode 节点的动态添加和动态删除

    动态添加 DataNode 节点 hadoop环境是必须的 需要加入新的 DataNode 节点,前提是已经配置好 SSH 无密登录:直接复制已有DataNode中.ssh目录中的authorized ...

  6. PAT 1060. 爱丁顿数(25)

    英国天文学家爱丁顿很喜欢骑车.据说他为了炫耀自己的骑车功力,还定义了一个“爱丁顿数”E,即满足有E天骑车超过E英里的最大整数E.据说爱丁顿自己的E等于87. 现给定某人N天的骑车距离,请你算出对应的爱 ...

  7. 函数创建XML文件

    REPORT  YTST_XML_14. *----------------------------------------------------------------------* * PANT ...

  8. weak 的内部实现原理

    问题 weak 变量在引用计数为0时,会被自动设置成 nil,这个特性是如何实现的? 答案 在 Friday QA 上,有一期专门介绍 weak 的实现原理.https://mikeash.com/p ...

  9. [原创]java WEB学习笔记10:GenericServlet

    本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...

  10. js里对php存贮的cookie进行读取和删除

    /* 读取cookie */ function getCookie(name){ var arr,reg=new RegExp("(^| )"+name+"=([^;]* ...