当前位置: 首页 > wzjs >正文

成都网站建设公司思乐科技seo技术交流论坛

成都网站建设公司思乐科技,seo技术交流论坛,东莞建网页,深圳坪山政府在线求最大公约数(GCD)与最小公倍数(LCM) 1. 基本概念 GCD(最大公约数):两个整数的最大公共因数LCM(最小公倍数):两个整数的最小公共倍数数学关系:L…

求最大公约数(GCD)与最小公倍数(LCM)

1. 基本概念

  • GCD(最大公约数):两个整数的最大公共因数
  • LCM(最小公倍数):两个整数的最小公共倍数
  • 数学关系LCM(a,b) = (a × b) / GCD(a,b)

2. C++实现方法

方法一:使用STL的gcd函数(C++17起)

#include <iostream>
#include <numeric> // 包含gcd和lcm函数int main() {int a = 56, b = 98;// C++17标准库函数int gcd_result = std::gcd(a, b);int lcm_result = std::lcm(a, b);std::cout << "数字: " << a << " 和 " << b << "\n";std::cout << "GCD: " << gcd_result << "\n";std::cout << "LCM: " << lcm_result << "\n";return 0;
}

方法二:自定义实现(欧几里得算法 / 辗转相除法)

欧几里得算法基于以下核心原理:
两个整数的最大公约数(GCD)等于其中较小数与两数相除余数的最大公约数
数学表达式:
gcd(a, b) = gcd(b, a mod b)
持续递归/迭代,直到余数为0时,此时的除数即为最大公约数

关键引理

a = b*q + r(其中 q 是商,r 是余数),则:
gcd(a, b) = gcd(b, r)

证明过程
  1. d = gcd(a, b),则 d|ad|b(d能整除a和b)
  2. 因为 r = a - b*q,所以 d|r(d也能整除余数)
  3. 因此d是br的公约数
  4. 反过来证明gcd(b,r)也是ab的公约数
  5. 故两者相等
#include <iostream>
#include <cstdlib> // 用于abs函数
using namespace std;// 递归实现GCD
int gcd(int a, int b) 
{return b == 0 ? a : gcd(b, a % b); //被除数b如果等于0那么就返回a,不等于0就返回b除a%b
}// 迭代实现GCD
int gcd_iterative(int a, int b) 
{while (b) {a %= b;swap(a, b);}return a;
}// 计算LCM
int lcm(int a, int b) 
{return abs(a * b) / gcd(a, b);
}int main() {int x = 56, y = 98;cout << "自定义实现:\n";cout << "GCD(" << x << ", " << y << ") = " << gcd(x, y) << "\n";cout << "LCM(" << x << ", " << y << ") = " << lcm(x, y) << "\n";return 0;
}

注意事项
处理负数:建议先取绝对值
处理零值:gcd(a,0) = |a|lcm(a,0) = 0
溢出问题:大数计算时考虑使用long long

补充:二进制GCD算法(Stein算法)

迭代版
int binary_gcd(int a, int b) {if (a == 0) return b;if (b == 0) return a;// 移除公共的2因子int shift = __builtin_ctz(a | b);a >>= __builtin_ctz(a);do {b >>= __builtin_ctz(b);if (a > b) swap(a, b);b -= a;} while (b != 0);return a << shift;
}
递归版
int binary_gcd(int a, int b) {if (a == b) return a;if (a == 0) return b;if (b == 0) return a;if (~a & 1) {  // a是偶数if (b & 1) // b是奇数return binary_gcd(a >> 1, b);else       // 都是偶数return binary_gcd(a >> 1, b >> 1) << 1;}if (~b & 1)    // a奇b偶return binary_gcd(a, b >> 1);// 都是奇数return (a > b) ? binary_gcd((a-b)>>1, b) : binary_gcd((b-a)>>1, a);
}
http://www.dtcms.com/wzjs/351497.html

相关文章:

  • 郑州网站建设公司哪家专业谷歌搜索优化seo
  • 徐州市住房建设局网站做网站seo优化
  • wordpress别名404湖南正规关键词优化报价
  • 网站建设属于哪种职位深圳网页搜索排名提升
  • 做网站知名的学习网站北京百度推广代理公司
  • 两学一做网站答题网址建立网站的软件
  • 合肥做网站公司有哪些推广普通话ppt课件
  • 商城网站建设包括哪些深圳网站优化哪家好
  • 有哪些做任务的网站seo代做
  • 邢台网站设计怎么做网络营销的方式有十种
  • 怎么做个网站有产品怎么找销售渠道
  • 网络营销职业规划300字厦门seo新站策划
  • wordpress文章只允许投稿者浏览网站优化推广教程
  • 岳阳做网站如何做线上销售和推广
  • 网站建设工资一月多少谷歌seo关键词优化
  • 微商城 分销平台甘肃新站优化
  • 徐州做网站管理的公司哪个公司的网站制作
  • 做网站服务器用国外的网站创建的流程是什么
  • 企业网站建设比较调查怎么写有没有永久免费crm
  • qq在线网站代码google play下载安卓
  • 百度网站官网入口百度竞价推广代运营
  • 祁东网站建设优化大师人工服务电话
  • 小米发布会最新sem和seo是什么
  • 家教中介网站怎么做学员引流seo优化快速排名技术
  • 2022最近比较火的热点话题seo云优化
  • 南京建设人才网站百度文库个人登录入口
  • 手机免费制作软件下载杭州seo教程
  • 建设网站时 首先要解决两个问题 一是什么宿迁网站建设制作
  • 选择合肥网站建设seo外包服务方案
  • 怎样做网站seo优化内存优化大师