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

来源:互联网 发布:亚马逊 云计算 发展史 编辑:程序博客网 时间:2024/06/15 22:09

描述

输入二个正整数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;}

0 0
原创粉丝点击