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

锦溪网站建设/html网页设计模板

锦溪网站建设,html网页设计模板,体育网站建设需求,wordpress适合做博客的主题求最大公约数(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.whsansanxincailiao.cn/news/31982718.html

相关文章:

  • 免费jsp源码分享网站/怎么做自己的网页
  • 天津网站建设公司/百度推广工资多少钱一个月
  • 做企业公司网站/兰州网站seo优化
  • 网站建设服务商是什么/seo点石论坛
  • 软件工程 旅游网站开发er图/谷歌seo详细教学
  • 制作企业网站多少钱/google搜索下载
  • 要建一个网站该怎么做/如何查一个关键词的搜索量
  • 佛山微网站建设多少钱/软文价格
  • 网站qq线客服咋做/国内搜索引擎排行榜
  • 商标注册号/宁德seo推广
  • 红和蓝的企业网站设计/赣州seo顾问
  • 周口网站制作/外贸接单平台
  • 哪有做网站 的/好的推广方式
  • 清风室内设计培训学校官网/如何做谷歌seo推广
  • 青岛市建设局网站停工/搜索指数查询平台
  • 南通 网站优化/外贸网站
  • 自助网站建设技术支持/学生没钱怎么开网店
  • 做的网站在百度上搜不出来/发广告推广平台
  • wordpress 如何生成 htlm/仁茂网络seo
  • wordpress信息收集表单制作/企业网站seo哪里好
  • 衡水网页网站建设/域名注册服务机构
  • bootstrap 网站开发/seo网站关键词优化方法
  • wordpress没有侧边栏/小红书怎么做关键词排名优化
  • 网络网站销售/北大青鸟软件开发培训学费多少
  • 郑州网站建设设计公司/今天上海最新新闻事件
  • 云南专业网站优化/培训网站推荐
  • 重庆网络技术有限公司/网站关键词排名优化软件
  • 购物网站策划方案/品牌策划与推广
  • wordpress在php7.0/企业关键词排名优化网址
  • 上海网站建设服务/信息流广告投放平台