鱼C论坛

 找回密码
 立即注册
查看: 1915|回复: 9

[技术交流] C++求最大公因数(两个数字版)

[复制链接]
发表于 2022-8-21 11:18:04 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 高山 于 2022-8-23 14:10 编辑

前言
本帖将会告诉你C++如何做求解最大公因数(也叫最大公倍数)。
回复奖励1鱼币,3次(定时提升)
代码说明
自定义函数版
  1. #include <bits/stdc++.h>//头文件
  2. using namespace std;//命名空间
  3. int gcd(int a,int b)//自定义函数求解
  4. {
  5.         if (a % b == 0)
  6.         {
  7.                 return b;
  8.         }
  9.         else
  10.         {
  11.                 return gcd(b,a % b);
  12.         }
  13. }
  14. int main()
  15. {
  16.         int a,b;//定义
  17.         cin >> a >> b;//输入
  18.         cout << gcd (a,b);//输出
  19.         return 0;
  20. }
复制代码

C++自带函数版
  1. #include<iostream>
  2. #include<algorithm>

  3. using namespace std;

  4. int main()
  5. {
  6.         int n,m;
  7.         cin >> n >> m;
  8.         cout<< __gcd(n,m);

  9.         return 0;
  10. }
复制代码
附件下载(不用下C++也能用)
C++自带函数款
C 最大公因数(自带函数).zip (431.88 KB, 下载次数: 2, 售价: 1 鱼币)
C++自定义函数款(权限限制,先用腾讯微云,登录QQ账户即可)
https://share.weiyun.com/NlgrTJEg

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-8-22 16:56:56 | 显示全部楼层

  1. #include <stdio.h>

  2. int main()
  3. {
  4.         int a,b,mid_result,min,n=2,s;
  5.         printf("\n\
  6.         求最大公约数与最小公倍数程序\n\n\
  7.         请输入2个大于1的正整数(中间有空格):\n");
  8.         scanf("%d %d",&a,&b);
  9.         printf("若要求最大公约数,请输入0,若要求最小公倍数,请输入1.\n");
  10.         scanf("%d",&s);
  11.         mid_result=a*b;
  12.         if(a>=b)
  13.         {
  14.                 min=b;
  15.         }
  16.         else
  17.         {
  18.                 min=a;
  19.         }
  20.         while(n<=min)
  21.         {
  22.                 if((mid_result/n)%a||(mid_result/n)%b)
  23.                 {
  24.                         n++;
  25.                 }
  26.                 else
  27.                 {
  28.                         mid_result=mid_result/n;
  29.                 }
  30.         }
  31.         if(s==0)
  32.         {
  33.                 printf(" %d 与 %d 的最大公约数为 %d !",a,b,a*b/mid_result);
  34.         }
  35.         else
  36.         {
  37.                 printf(" %d 与 %d 的最小公倍数为 %d !",a,b,mid_result);
  38.         }
  39.        
  40.         return 0;
  41. }
复制代码

以前随便做的冗长代码

评分

参与人数 1荣誉 +1 鱼币 +1 收起 理由
高山 + 1 + 1 鱼C有你更精彩^_^,置顶了!!!

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2022-8-21 19:38:54 | 显示全部楼层

回帖奖励 +1 鱼币

支持楼主
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-8-21 20:29:20 | 显示全部楼层

回帖奖励 +1 鱼币

反对楼主,希望楼主不要误人子弟。
从第一句“ C++如何做求解最大公因数(也叫最大公倍数)”就开始令人迷惑,试问楼主什么叫“最大公倍数”,又是怎么“也称最大公因数”的?
自定义函数和自带函数版具有相同的问题:不使用标准写法。头文件 bits/stdc++.h 和 __gcd 均没有在标准中被定义,在大多数情况下使用此类非标准内容都是强烈不推荐的——除非能够保证使用的功能将在应用的时间和空间范围之内保持稳定。
如果您想使用 C++ 内置的最大公因数计算函数,定义在头文件 <numeric> 中的 std::gcd 是一个不错(远比 __gcd 好得多)的选择。

评分

参与人数 1荣誉 +1 鱼币 +1 收起 理由
高山 + 1 + 1 谢谢说明,我将会改正!

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 2 反对 0

使用道具 举报

发表于 2022-8-21 23:25:20 | 显示全部楼层

回帖奖励 +1 鱼币

我有一种非常复杂的方法
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-8-22 09:23:06 | 显示全部楼层
额外减小 发表于 2022-8-21 23:25
我有一种非常复杂的方法

能说说吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-8-22 16:03:14 | 显示全部楼层
本帖最后由 陈尚涵 于 2022-8-22 16:16 编辑


但是我请楼主先认识最大公因数和最大公倍数概念的定义
最大公因数:指两个数字共有的因数中最大的因数
最大公倍数:指两个数字都是他的因数且是符合条件中最大的,既无限,一般称之为最小公倍数
也就是说最大公因数≠最大公倍数
求最大公因数有很多方法,如辗转相减法,辗转相除法,还有穷举等
另外,最小公倍数=最大公因数×第一个数×第二个数
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2022-8-22 21:12:28 | 显示全部楼层
陈尚涵 发表于 2022-8-22 16:03
但是我请楼主先认识最大公因数和最大公倍数概念的定义
最大公因数:指两个数字共有的因数中最大的因数
...

又来捉虫了,「最小公倍数=最大公因数×第一个数×第二个数」不总是成立,仅当两个数互质时成立。您可能想描述的是「最小公倍数×最大公因数=第一个数×第二个数」
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-8-23 10:55:05 | 显示全部楼层
dolly_yos2 发表于 2022-8-22 21:12
又来捉虫了,「最小公倍数=最大公因数×第一个数×第二个数」不总是成立,仅当两个数互质时成立。您可能 ...

对不起哈乘除反了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-8-30 17:01:00 | 显示全部楼层
一个错别字:前言那里,没有最大公倍数,应该是最大公约数
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-11 17:06

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表