#D1001. GCD和LCM是好朋友(数据轻松版)

GCD和LCM是好朋友(数据轻松版)

背景

1. 最大公约数(GreatestCommonDivisor(GCD))(Greatest Common Divisor (GCD))

1.1 基本概念

最大公因数,也称最大公约数、最大公因子,指两个或多个整数共有约数中最大的一个。a,b的最大公约数记为ab(a,b),同样的,abca,b,c的最大公约数记为abc(a,b,c),多个整数的最大公约数也有同样的记号。求最大公约数有多种方法,常见的有质因数分解法、短除法、辗转相除法、更相减损法。与最大公约数相对应的概念是最小公倍数,aba,b的最小公倍数记为[aba,b]。

1.2 算法

短除法

pqp,q的最大公约数:

image

a,ba,b为互质数时候,xx为最大公约数,y=x×a×by=x×a×b为最小公倍数

辗转相除法

辗转相除法:辗转相除法是求两个自然数的最大公约数的一种方法,也叫欧几里德算法。

用辗转相除法求几个数的最大公约数,可以先求出其中任意两个数的最大公约数,再求这个最大公约数与第三个数的最大公约数,依次求下去,直到最后一个数为止。最后所得的那个最大公约数,就是所有这些数的最大公约数。

image

2. 最小公倍数(LeastCommonMultiple(LCM))(Least Common Multiple(LCM))

2.1 基本概念

两个或多个整数公有的倍数叫做它们的公倍数,其中除0以外最小的一个公倍数就叫做这几个整数的最小公倍数。整数a,b的最小公倍数记为[aba,b],同样的,abca,b,c的最小公倍数记为[abca,b,c],多个整数的最小公倍数也有同样的记号。

与最小公倍数相对应的概念是最大公约数,a,b的最大公约数记为(aba,b)。关于最小公倍数与最大公约数,我们有这样的定理:(a,ba,b)[a,ba,b]=a×ba×b(a,ba,b均为整数)

2.2 算法

公式法

由于两个数的乘积等于这两个数的最大公约数与最小公倍数的积。即ab×[ab]=a×b(a,b)×[a,b]=a×b。所以,求两个数的最小公倍数,就可以先求出它们的最大公约数,然后用上述公式求出它们的最小公倍数。

题目说明

已知两个正整数 P,Q的GCD(P,Q)是x,LCM(P,Q)是y,求出满足上述条件的P,Q的对数有几对。


输入格式

每个测试文件只包含一组测试数据,每组两个正整数x和y


输出格式

对于每组输入数据,输出满足条件的所有可能的两个正整数的对数的方案总数。

样例

3 60
4

下面是对样例数据的说明:

输入3 60

此时的P,QP, Q分别为:

序号 PP QQ
11 3 3 6060
22 1212 1515
33 1515 1212
44 6060 3 3

所以上述有4种可能,输出答案4

数据范围

测试点 x范围 y范围
1 1~55 2x<202≤ x<20 2y50002≤ y≤5000