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;
}
}
主要是你f函数就只能有一个返回值,你怎么能让他返回两个数。