欧几里得算法
本文最后更新于246 天前,其中的信息可能已经过时,如有错误可以直接在文章下留言

欧几里得算法又称辗转相除法,是指用于计算两个非负整数a,b的最大公约数(Greatest Common Divisor,简称 GCD)。公约数,也叫公因数。

这玩意太可惜了,如果我早就学会这个对我初高中的学习,数学计算还是有些帮助的。

我们平常算公约数一般用短除法吧,如图

但是短除法存在的问题是:当公共素因子较小时,通过观察可以很快找出;但是当公共素因子较大时,仅仅通过观察已经很难找出。比如要求1997和615的最大公约数,就很难直接找到其公共素因子。这个时候就要用到欧几里得算法。放几个我看的学习视频和文章。

欧几里得算法:计算两个正整数的最大公约数 – 知乎 (zhihu.com)

欧几里得演算法(辗转相除法)_哔哩哔哩_bilibili

用欧几里得算法求解如下:

当被加的数为0时,可以得出,1997和615的最大公约数为1。

再举个例子

比如现在要求这两个数 32,26的最大公约数,解法如下:

32/26=1…6 (此行除数26作下一行的被除数,余数作为除数)

26/6=4…2 (此行同理)

6/2=3…0 (此处余数为零,意味着最大公约数就是2)

反复把一个式子中的除数当作被除数去除余数,直到最后余数等于0。

最大公约数就是最后那个式子的除数,本例就是2。

以上做法的依据是以下定理:

两个整数的最大公约数等于其中较小的那个数和两数相除余数的最大公约数

即gcd (a,b) = gcd (a,a%b),该定理证明过程如下

假设c = gcd(a,b),则存在m,n,使a = mc, b = nc;

令r = a mod b,即存在k,使r = a-kb = mc – knc = (m-kn)c;

故gcd(b,a mod b) = gcd(b,r) = gcd(nc,(m-kn)c) = gcd(n,m-kn)c;

则c为b与a mod b的公约数;

假设d = gcd(n,m-kn), 则存在x,y, 使n = xd, m-kn = yd;

故m = yd+kn = yd+kxd = (y+kx)d;故有a = mc = (y+kx)dc, b = nc = xdc;

可得 gcd(a,b) = gcd((y+kx)dc,xdc) = dc;

由于gcd(a,b) = c, 故d = 1;即gcd(n,m-kn) = 1, 故可得gcd(b,a mod b) = c;

故得证gcd(a,b) = gcd(b,a mod b).

自己写了一个Python代码来实现,如下

def gcd():
    print('请输入两个数,我可以求它们的最大公约数哦(⊙o⊙)')
    a = int(input())
    b = int(input())
    if a<=0 or b<=0:
        print("error")
    c = a % b
    while c!=0:
        d=c
        c = b%c
        b = d
    print(b)
    return b
gcd()

然后再看别人的C语言代码的实现


#include <stdio.h>
int main()
{
	int u, v;
	scanf("%d %d", &u, &v);
	while (v != 0)
	{
		int tmp = u % v;
		u = v;
		v = tmp;
	}
	printf("%d", u);
	return 0;
 

别人写的我读了感觉比我写的直接一点,就是直接将除数当做下一步的被除数,余数当作除数,我写的虽然也是这意思,但总觉得没别人写的呈现的那么明显。

文末附加内容

评论

  1. Camille2511
    Windows Chrome
    8 月前
    2024-2-23 15:46:11

    Modern Talking был немецким дуэтом, сформированным в 1984 году. Он стал одним из самых ярких представителей евродиско и популярен благодаря своему неповторимому звучанию. Лучшие песни включают “You’re My Heart, You’re My Soul”, “Brother Louie”, “Cheri, Cheri Lady” и “Geronimo’s Cadillac”. Их музыка оставила неизгладимый след в истории поп-музыки, захватывая слушателей своими заразительными мелодиями и запоминающимися текстами. Modern Talking продолжает быть популярным и в наши дни, оставаясь одним из символов эпохи диско. Музыка 2024 года слушать онлайн и скачать бесплатно mp3.

    • 博主
      Camille2511
      Windows Edge
      8 月前
      2024-2-24 22:52:52

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇