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

来源:互联网 发布:mac osx 的route命令 编辑:程序博客网 时间:2024/05/17 03:28

时间限制: 1 Sec  内存限制: 128 MB

题目描述

输入二个正整数x0,y0(2<=x0<100000,2<=y0<=1000000),求出满足下列条件的P,Q的个数
条件: 1.P,Q是正整数
2.要求P,Q以x0为最大公约数,以y0为最小公倍数.
试求:满足条件的所有可能的两个正整数的个数.

输入

二个正整数x0,y0

输出

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

样例输入

3 60

样例输出

4

#include <iostream>using namespace std;int gys(int a,int b){int p,c;if(a >b){c = a;a = b;b = c;}for(int i=1;i<=a;++i){if(a%i==0 && b%i==0)p = i;}return  p;}int gbs(int a,int b){int s = gys(a,b);int s1 =s;int n=1;while(1){if( s1>=a && s1>=b && s1%a==0 && s1%b==0)break;elses1 =s * (++n);}return s1;}int main(){int x0,y0;int n = 0;int count =0;cin>>x0>>y0;int f[y0/x0 + 1];for(int i=0;i<y0/x0;++i){f[i] = x0 * (++n);}for(int i=0;i<y0/x0;++i){for(int j=0; j<y0/x0;++j){if(gys(f[i],f[j])==x0 && gbs( f[i],f[j])==y0) ++count;}}cout<<count<<endl;return 0;} 



0 0
原创粉丝点击