洛谷 P1029 最大公约数和最小公倍数问题
链接
https://www.luogu.org/problem/P1029
题目
题目描述
输入2个正整数x0,y0(2≤x0<100000,2≤y*0<=1000000),求出满足下列条件的P,Q的个数
条件:
- P,Q是正整数
- 要求P,Q*以x0为最大公约数,以y0为最小公倍数.
试求:满足条件的所有可能的2个正整数的个数.
输入格式
2个正整数x0,y*0
输出格式
1个数,表示求出满足条件的P,Q的个数
输入输出样例
输入 #1
1 | 3 60 |
输出 #1
1 | 4 |
说明/提示
P,Q有4种
1、3,60
2、15,12
3、12,15
4、60,3
思路
题目就是输入x,y,一为最小公约数,一为最大公倍数,求存在的pq对数。
p=x*k1,q=x*k2,y=x*k1*k2,k1k2互质,这就是总结之后的关系,x*y=p*q,将基于这个公式和辗转相除法来计算。
输入xy,寻找pq乘积为xy的对,之后判断这对pq的最大公约数是不是x,是的话结果就加二(一正一反)。最后,考虑到x=y,比如3,3,若如此,结果加一。
代码
1 |
|