Time Limit: 1000MS   Memory Limit: 32768KB   64bit IO Format: %I64d & %I64u

Submit Status

Description

The greatest common divisor GCD(a,b) of two positive integers a and b,sometimes written (a,b),is the largest divisor common to a and b,For example,(1,2)=1,(12,18)=6. 
(a,b) can be easily found by the Euclidean algorithm. Now Carp is considering a little more difficult problem: 
Given integers N and M, how many integer X satisfies 1<=X<=N and (X,N)>=M.
 

Input

The first line of input is an integer T(T<=100) representing the number of test cases. The following T lines each contains two numbers N and M (2<=N<=1000000000, 1<=M<=N), representing a test case.
 

Output

For each test case,output the answer on a single line.
 

Sample Input

3
1 1
10 2
10000 72
 

Sample Output

1
6
260
 

Source

ECJTU 2009 Spring Contest
题意:给定n和m,m小于n,求x在1到n之间,满足gcd(x,n)>=m。问这样的x有多少个,实际上x是从m到n之间的。
题解:考察对欧拉函数本质的理解,欧拉函数指的是对于一个数来说小于等于该数的数中与其互质的数的个数。找出n的所有大于m的因子x,设phi(i)为i的欧拉函数值,那么答案就是phi(n/x)的和。比如第二组样例n=10,m=2,x=2,5,10,注意x=1是不满足条件的。答案就是phi(10/2)+phi(10/5)+phi(10/10)=4+1+1=6。phi(10/2)=4代表的是2*1=2 , 2*2=4 , 2*3=6 , 2*4=8 这四个数;phi(10/5)=1代表的是5*1=5;phi(10/10)=1代表的是10*1=10。那么为什么是这样呢?因为我们知道该因子x已经满足条件,比如2满足条件,我们可以让这个数变大为x*y,但一定要在10/2=5的范围之内,而且gcd(n,x*y)=x,因为x不能超过n,也就是把2乘以一个小于5的数y,而且这个y一定要与5是互素的。因为我们一定要保证gcd(n=2*5,2*y)=2,否则就出现重复了。举个例子,比如n=12,3是满足条件的,12/3=4,现在让3变大,2与4是不互素的我们让3*2=6,gcd(12,6)=6!=3,这就出现重复了就不对了,6不是现在算的时候。而欧拉函数值恰好是求一个数小于等于该数中与其互质的数的个数,所以用欧拉函数做就可以了,注意n的范围较大要用sqrt(n)算,因为我们在算小的这一侧因子的时候大的因子也会跟着出来,理解了欧拉函数的本质本题也就迎刃而解了。如描述有错误欢迎指正。
#include <iostream>
#include <cmath>
using namespace std;
int enlur(int n) //求欧拉函数
{
int ans=n;
for(int i=;i*i<=n;i++)
{
if(n%i==)
{
ans=ans/i*(i-);
while(n%i==)
n/=i;
}
}
if(n>)
ans=ans/n*(n-);
return ans;
}
int main()
{
int t;
cin>>t;
while(t--)
{
int n,m,ans=;
cin>>n>>m;
int tmp=sqrt(n);
for(int i=;i<=tmp;i++)
{
if(n%i==)
{
if(i>=m)
ans+=enlur(n/i);
if(n/i>=m)
ans+=enlur(i);
}
}
if(tmp*tmp==n&&tmp>=m) //注意得是tmp>=n
ans-=enlur(tmp);
cout<<ans<<endl;
}
}

HDU 2588 GCD (欧拉函数)的更多相关文章

  1. HDU 1695 GCD 欧拉函数+容斥定理 || 莫比乌斯反演

    GCD Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submiss ...

  2. HDU 1695 GCD 欧拉函数+容斥定理

    输入a b c d k求有多少对x y 使得x在a-b区间 y在c-d区间 gcd(x, y) = k 此外a和c一定是1 由于gcd(x, y) == k 将b和d都除以k 题目转化为1到b/k 和 ...

  3. HDU 1695 GCD (欧拉函数,容斥原理)

    GCD Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submis ...

  4. hdu 1695 GCD (欧拉函数+容斥原理)

    GCD Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submiss ...

  5. hdu 1695 GCD 欧拉函数 + 容斥

    http://acm.hdu.edu.cn/showproblem.php?pid=1695 要求[L1, R1]和[L2, R2]中GCD是K的个数.那么只需要求[L1, R1 / K]  和 [L ...

  6. HDU 1695 GCD 欧拉函数+容斥原理+质因数分解

    链接:http://acm.hdu.edu.cn/showproblem.php?pid=1695 题意:在[a,b]中的x,在[c,d]中的y,求x与y的最大公约数为k的组合有多少.(a=1, a ...

  7. BZOJ 2818: Gcd [欧拉函数 质数 线性筛]【学习笔记】

    2818: Gcd Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 4436  Solved: 1957[Submit][Status][Discuss ...

  8. HDU 2824 简单欧拉函数

    1.HDU 2824   The Euler function 2.链接:http://acm.hdu.edu.cn/showproblem.php?pid=2824 3.总结:欧拉函数 题意:求(a ...

  9. POJ 2773 Happy 2006【GCD/欧拉函数】

    根据欧几里德算法,gcd(a,b)=gcd(a+b*t,b) 如果a和b互质,则a+b*t和b也互质,即与a互质的数对a取模具有周期性. 所以只要求出小于n且与n互质的元素即可. #include&l ...

随机推荐

  1. POJ2965The Pilots Brothers' refrigerator(枚举+DFS)

    The Pilots Brothers' refrigerator Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 22057 ...

  2. P1049送给圣诞夜的礼品(矩阵十大问题之四)

    https://vijos.org/p/1049 P1049送给圣诞夜的礼品 Accepted 标签:组合数学送给圣诞夜的礼物[显示标签]     返回代码界面 | 关闭   Pascal Pasca ...

  3. HBase概念学习(十)HBase与MongDB等NoSQL数据库对照

    转载请注明出处: jiq•钦's technical Blog - 季义钦 一.开篇 淘宝之前使用的存储层架构一直是MySQL数据库,配合以MongDB,Tair等存储. MySQL因为开源,而且生态 ...

  4. javascript判断文件大小

    <input type="file" id="fileName" name ="fileName" onchange="Ge ...

  5. linux桌面应用开发之折腾

    1 起因 需要开发一个wifi定位的应用,最先在android下搞,后来因为多网卡的原因要换平台,经历了windows,最终选择用kaili linux.debian系的linux,开发桌面应用怎么办 ...

  6. JDBCTemplate基础学习

    JDBCTemplate:spring提供的用于操作数据库的模板,类似DbUtils.使用时必须设置数据源(DataSource):数据源如DBCP.C3P0等 一.JDBCAPI简单使用Demo 1 ...

  7. 我在 impress.js 中学到的小套路

    我在 impress.js 中学到的小套路 写在开篇 作为了一个自学 JavaScript 才一个月的新手,前几天“妄图”研究 jQuery-3.1.0 源码,结果自然是被虐得死去活来.机缘巧合之下, ...

  8. [bug]使用SharpZipLib遇到中文名称乱码问题

    写在前面 业务逻辑是这样的,需要导出一个app的话题,并需要把该话题下帖子的附件导出,然后需求想修改成人员的名称.jpg的格式.所以就出现了中文乱码的问题.在本地没问题,但发布到服务器上面就出问题,每 ...

  9. JQUERY 模糊选择

    JQUERY 模糊选择        [属性名称]         匹配包含给定属性的元素      [att=value]       匹配包含给定属性的元素      [att*=value]   ...

  10. 没玩过这些微信小游戏你就out了

    你确定没玩过下面这些微信小游戏?是不是有点out了?赶紧添加微信号kangfuyk,回复H5马上畅玩! 当然了,扫一下二维码关注后回复H5更快捷噢! 微信小游戏列表,持续更新中 辨色大比拼!心理游戏 ...