最大公约数最小公倍数

#include<stdio.h>int gcd(int a, int b) {return (b ? gcd(b, a % b):a);
}int lcm(int a, int b) {return a / gcd(a,b) * b;
}
int main(){int a,b;while (~scanf("%d%d",&a, &b)) {printf("gcd(%d, %d) = %d\n", a, b, gcd(a,b));printf("lcm(%d,%d) = %d", a, b, lcm(a, b));}return 0;
}

扩展欧几里得算法

#include<stdio.h>int ex_gcd(int a, int b, int *x, int *y) {if (!b) {*x = 1, *y = 0;return a;}int xx, yy, ret = ex_gcd(b, a % b, &xx, &yy);*x = yy;*y = xx - a / b * yy;return ret;
}int main() {int a, b, x, y;while (~scanf("%d%d",&a, &b)) {printf("gcd(%d,%d) = %d\n", a, b, ex_gcd(a, b, &x, &y));printf("%d * %d + %d * %d = %d\n", a, x, b, y, a * x + b * y);}return 0;
}

第二种写法:不需要借助xx,yy

#include<stdio.h>int ex_gcd(int a, int b, int *x, int *y) {if (!b) {*x = 1, *y = 0;return a;}int ret = ex_gcd(b, a % b,y, x);*y -= a / b * (*x);return ret;
}int main() {int a, b, x, y;while (~scanf("%d%d",&a, &b)) {printf("gcd(%d,%d) = %d\n", a, b, ex_gcd(a, b, &x, &y));printf("%d * %d + %d * %d = %d\n", a, x, b, y, a * x + b * y);}return 0;
}

辗转相除求最大公约数最小公倍数 扩展欧几里得算法相关推荐

  1. 辗转相减法求最大公约数

    第一次接触这个算法,同时也觉得很奇妙,在本文加以练习,并与大家分享. 辗转相减法是一种简便的求出两数最大公约数的方法.(更相减损术) 辗转相减法(求最大公约数),即尼考曼彻斯法,其特色是做一系列减法, ...

  2. C语言经典例题100道(辗转相除求最大公约数和最小公倍数)

    程序[16] 题目:输入两个正整数m和n,求其最大公约数和最小公倍数. 程序分析: (1)最小公倍数=输入的两个数之积除于它们的最大公约数,关键是求出最大公约数: (2)求最大公约数用辗转相除法(又名 ...

  3. 辗转相除求最大公约数,最大公倍数

    上次笔试考到这个,不知道辗转相除什么意思,用短除法做的,回来查了一下才知道 辗转相除法也叫欧几里德算法,这是原理 例如,求(319,377): ∵ 377÷319=1(余58) ∴(377,319)= ...

  4. php最大公约数辗转相除程序,[转]辗转相除求最大公约数

    转:蓝魔之泪de万事屋百度博客 http://hi.baidu.com/didihl/blog/item/533b1fec7cea252063d09f82.html 辗转相除算法的简介 在数论中,辗转 ...

  5. 辗转相除求最大公约数

    描述:计算两个非负整数 p 和 q 的最大公约数:若 q 是 0,则最大公约数为 p.否则,将 p 除以 q 得到余数 r,p 和 q 的最大公约数即为 q 和 r 的最大公约数. <span ...

  6. 求最大公约数c语言代码_辗转相除求最大公约数原理

    辗转相除法代码 代码并不难,很多人都会写. public static int f(int a, int b){ while(b != 0){ int temp = b; b = a % b; a = ...

  7. 【C++】辗转相除求最大公约数算法及原理

    在洛谷上刷到一道题 P1888 三角函数 里面用到了求最小公约数的方法.所以想着总结一下,了解一下求最小公约数的原理. 其实C++自带gcd函数,需要导入algorithm库 举例: #include ...

  8. 辗转相除求最大公约数原理

    首先看 代码如下,代码并不难,很多人都会写. public static int f(int a, int b){while(b != 0){int temp = b;b = a % b;a = te ...

  9. 密码学基础算法(一)基于整数的欧几里得算法和扩展欧几里得算法

    图片来源: 随便谷歌的一个图片 图片地址: https://jason-chen-1992.weebly.com/uploads/1/0/8/5/108557741/euclidean_3_orig. ...

最新文章

  1. QT自定义控件(生成和使用)
  2. Nginx为什么比Apache Httpd高效
  3. 各种资源(持续更新中)
  4. 网不好怎么办?TLS握手带宽直降80%,BabaSSL是怎么做到的?| 龙蜥技术
  5. FusionInsight怎么帮「宇宙行」建一个好的「云数据平台」?
  6. c++绘制函数图像_简洁优雅的Matplotlib可视化 | 绘制论文曲线图
  7. Linux Gedit 报出警告
  8. makefile中 = ,:=,+=有怎么区别?
  9. 防火墙虚拟系统资源分配配置实例
  10. vecm模型怎么写系数_时变秩和时变系数VECM模型与“费雪效应”机制检验
  11. easydarwin 安装_easydarwin支持什么格式
  12. ICMP增强型snort规则
  13. office2010卸载不掉解决办法
  14. 跟着团子学SAP CS:SAP CS(客户服务)模块概览
  15. JVM如何读GC日志以及如何使用工具分析
  16. 如何利用python盗qq_一个团队为了让我帮他提高流量,竟然盗我QQ,没办法,我只好帮他用python刷了刷流量!...
  17. 如何用PR制作GIF图(Premiere)
  18. 该如何在中国手机市场生存
  19. ssm+java企业公司产品分销商管理系统
  20. Biodiversity and Ecosystem Functioning(生物多样性和生态系统功能)

热门文章

  1. Java基础---数据类型转换和运算符
  2. js中 var a= b || c;
  3. jmeter通过ant执行时报错 jmeter.log not found
  4. C#学习笔记(十一):类和对象
  5. laravel 邮件配置
  6. 垃圾邮件过滤——学习笔记
  7. 求逆元的两种方法+求逆元的O(n)递推算法
  8. 【linux】ubuntu下crontab无效解决方法
  9. TextBox只输入数字和event.keyCode的键码值
  10. ASP.NET 控制页和内容页中的事件