巨兔12138 发表于 2020-6-28 20:38:02

如何实现,在A函数中求出的值,在B函数中仍然可以使用

#include<iostream>

using namespace std;

int gcd(int x, int y);
int lcm(int x, int y);

int main()
{
        int m, n;
        cout << "请输入两个正整数:";
        cin >> m >> n;

        cout << "最大公约数为:" << gcd(m, n) << endl;//最大公约数
        cout << "最小公倍数为:" << lcm(m, n);//最小公倍数
}

int gcd(int x, int y)
{
        int temp;
        if (x < y)
        {
                temp = y;
                y = x;
                x = temp;
        }

        int c = 1;
        while (c)
        {
                c = x % y;
                x = y;
                y = c;
        }

        return x;
}

int lcm(int x, int y)
{
        int r = x * y;

        int temp;
        if (x < y)
        {
                temp = y;
                y = x;
                x = temp;
        }

        int c = 1;
        while (c)
        {
                c = x % y;
                x = y;
                y = c;
        }

        int d = r / x;
        return d;
}
这是一个求最大公约数和最小公倍数的代码
想请问一下下各位大神们
如果想在求最小公倍数的函数lcm中用
求最大公约数函数gcd中已经求得的最大公约数x
该如何实现啊

小甲鱼的铁粉 发表于 2020-6-28 20:45:10

#include<iostream>

using namespace std;

int gcd(int x, int y);
int lcm(int x, int y);

int main()
{
      int m, n,x;
      cout << "请输入两个正整数:";
      cin >> m >> n;
      x = gcd(m,n);
      cout << "最大公约数为:" << x << endl;//最大公约数
      cout << "最小公倍数为:" << lcm(m, x);//最小公倍数
}

int gcd(int x, int y)
{
      int temp;
      if (x < y)
      {
                temp = y;
                y = x;
                x = temp;
      }

      int c = 1;
      while (c)
      {
                c = x % y;
                x = y;
                y = c;
      }

      return x;
}

int lcm(int x, int y)
{
      int r = x * y;

      int temp;
      if (x < y)
      {
                temp = y;
                y = x;
                x = temp;
      }

      int c = 1;
      while (c)
      {
                c = x % y;
                x = y;
                y = c;
      }

      int d = r / x;
      return d;
}

永恒的蓝色梦想 发表于 2020-6-28 20:45:44

没办法。

小甲鱼的铁粉 发表于 2020-6-28 20:47:13

引入一个新变量x
int x;
将gcd的返回值给x
x = gcd(m,n);
再使用x,需要求x和谁的最小公倍数就和谁一起带入函数

小甲鱼的铁粉 发表于 2020-6-28 20:50:16

楼主我这里有一个关于最大公约数和最小公倍数的算法,你可以看一下

jhanker 发表于 2020-6-29 10:58:27

设置一个全局变量,或静态变量
页: [1]
查看完整版本: 如何实现,在A函数中求出的值,在B函数中仍然可以使用