c++实现求最大公因数和最小公倍数

闲聊 无标签
1 1204
WIZ
WIZ 自成一派 2023-09-05 21:03:47
Lv:45级
C++
#include<iostream>
using namespace std;
int GCD(int a,int b);
int LCM(int a,int b);
int main()
{
int num1,num2,gcd,lcm;
cout<<"求两个数的最大公约数及最小公倍数"<<endl<<endl;
cout<<"请输入两个数:";
cin>>num1>>num2;
gcd=GCD(num1,num2);
lcm=LCM(num1,num2);//输出最大公约数和最小公倍数
cout<<"最大公约数为:"<<gcd<<endl;
cout<<"最小公倍数为:"<<lcm<<endl;
system("pause");
return 0;
}
int GCD(int num1,int num2)
{
if(num1%num2==0)
return num2;
else return  GCD(num2,num1%num2);
}
int LCM(int a,int b)
{
int temp_lcm;
temp_lcm=a*b/GCD(a,b);//最小公倍数等于两数之积除以最大公约数
return temp_lcm;
}

楼主签名:DNSWIZ 站长故事
回帖
回复列表
  • WIZ
    2023-09-05 21:22:41
    用辗转相除法求最大公因数 

     辗转相除法的流程图如下:

    Image

     其中,输入保证a>b。 参考代码如下:

    #include <iostream>
    using namespace std;
    
    int main(){<!-- -->
    int a, b;
    cin >> a >> b;
    // 假设确保 a > b
    while(a % b != 0){<!-- -->
    int c = a % b;
    a = b;
    b = c;
    }
    cout << b << endl;
    return 0;
    }
    特别的,如果能用头文件algorithm的话,可以直接使用__gcd(int a, int b)函数来算最小公因数。我用的dev-c++是可以跑的通的。
    参考代码如下:

    #include <iostream>
    #include <algorithm>
    using namespace std;
    
    int main(){
    	int a, b;
    	cin >> a >> b;
    	int n = __gcd(a, b);
    	cout << n << endl;
    	return 0;
    } 
    
    最小公倍数可以通过求得的最大公因数来计算。
    最小公倍数=a*b/最大公因数

    0 回复

请遵守各国法律法规 严禁违规内容

  • QQ群:1140251126
  • Email:m@max.ooo
  • 本站可以自由发布外链
  • 本站域名皆为闲置域名,均可出售
Hot posts
01 网站用的啥程序呀 206
02 收集可以发帖卖域名的几个站 185
03 我一个大调查下去,直接把她避的税查出来 179
04 看看网站访问速度咋样 179
05 AIX.CX是不是个好域名? 178
06 girl.gs页面定下来了,看过都说好大 170
07 今天wiz卖了320亿,能不能带一下我的dnswiz 161
08 我雇了个刨地的人,干活太慢,有没有来帮忙的 160
09 卖保险的都很执着的打电话说明? 152
10 都在跑路 145
推荐主机