您的位置:首页 > 其它

P1131 最小公倍数和最大公约数问题

2016-08-31 14:34 274 查看

描述

输入二个正整数x0,y0(2≤x0≤100000,2≤y0≤1000000),求出满足下列条件的P、Q的个数。

条件:1.P、Q是正整数

2.要求P、Q以xO为最大公约数,以yO为最小公倍数。

试求,满足条件的所有可能的两个正整数的个数。

格式

输入格式

两个正整数

输出格式

满足条件的所有可能的两个正整数的个数

样例1

样例输入1

3 60


样例输出1

4


求最大公约数算法:

辗转相除法

有两整数a和b:

① a%b得余数c

② 若c=0,则b即为两数的最大公约数

③ 若c≠0,则a=b,b=c,再回去执行①

例如求27和15的最大公约数过程为:

27÷15 余1215÷12余312÷3余0因此,3即为最大公约数

求最小公倍数算法:

最小公倍数=两整数的乘积÷最大公约数

#include<iostream>
using namespace std;

int gcd(int a, int b)//不用管a,b大小关系
{
int c = a%b;
while (c)
{
a = b;
b = c;
c = a%b;
}
return b;
}
int lcm(int a, int b)
{
return a*b / gcd(a, b);
}
int main()
{
int x0, y0,num;
while (cin >> x0 >> y0)
{
num = 0;
for (int p = x0; p <= y0;p++)
for (int q = x0; q <= y0; q++)
{
if (gcd(p, q) == x0&&lcm(p, q) == y0)
num++;
}
cout << num << endl;
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息