您的位置首页百科知识

wikioi 1012已知最大公约数和最小公倍数求满足条件的两个数

wikioi 1012已知最大公约数和最小公倍数求满足条件的两个数

的有关信息介绍如下:

楼主,你写的代码太朦胧了,看不懂。下面是我用C++写的,代码,和C差不多,你自己调试下。

#include <iostream>

using namespace std;

void f(int x,int y);

int gcd(int x, int y);

bool gcd(int x, int y, int z);

int main()

{

int x, y;

cout<<"请输入最大公约数"<<endl;

cin >> x; //最大公约数

cout<<"请输入最小公倍数"<<endl;

cin >> y; //最小公倍数

f(x, y);

return 0;

}

void f(int x, int y)

{

int zuhe = 0;

if (y%x != 0 || x > y)

{

cout<<"第三排的那个先生,你输错了"<<endl;

return;

}

int s = y/x;

for(int i = 1; i <= s; i++) //求最后的两个因子

{

if(s%i == 0)

{

int n = s/i;

int l = i;

if(gcd(n, l, x))

{

int a = n * x;

int b = l * x;

zuhe++;

cout<<"组合"<<zuhe<<":"<<a<<","<<b<<endl;

}

}

}

}

int gcd(int x, int y) //求两者的最大公约数

{

int tem;

if (x < y)

{

tem = y;

y = x;

x = tem;

}

while(y)

{

tem = y;

y = x % y;

x = tem;

}

return x;

}

bool gcd(int x, int y, int z) //三者是否有最大公约数

{

if( gcd(gcd(x, y), z) == 1

&& gcd(gcd(x, z), y) == 1

&&gcd(gcd(z, y), x) == 1

&&gcd(x, y) ==1)

{

return true;

}

else

{

return false;

}

}

wikioi 1012已知最大公约数和最小公倍数求满足条件的两个数

主要是你f函数就只能有一个返回值,你怎么能让他返回两个数。