输入两个正整数 x_0, y_0,求出满足下列条件的 P, Q 的个数:
-
P,Q 是正整数。
-
要求 P, Q 以 x_0 为最大公约数,以 y_0 为最小公倍数。
试求:满足条件的所有可能的 P, Q 的个数。
输入格式一行两个正整数 x_0, y_0。
输出格式一行一个数,表示求出满足条件的 P, Q 的个数。
输入输出样例输入 #1
3 60
输出 #1
4
(两数之积=最大公因数×最小公倍数)
代码如下:
def gcd(a, b):
while b:
a, b = b, a % b
return a
def lcm(a, b):
t = a * b
while b:
a, b = b, a % b
return t // a
x, y = map(int, input().split())
count = 0
if x == y:
count -= 1
k = x * y
for i in range(1, int(k ** 0.5) + 1):
if k % i == 0:
k2 = k // i
gcdnum = gcd(i, k2)
lcmnum = lcm(i, k2)
if gcdnum == x and lcmnum == y:
count += 2
print(count)


![【Python】P1029 [NOIP2001 普及组] 最大公约数和最小公倍数问题 【Python】P1029 [NOIP2001 普及组] 最大公约数和最小公倍数问题](http://www.mshxw.com/aiimages/31/861545.png)
