两个数最大公约数的递推公式
视频给出的核心公式是:对于任意整数 ,。讲解者强调这是求两个数最大公约数时需要掌握的关键递推关系。
南瓜之运 · 哔哩哔哩 · 4:14
片段先用文档给出两个数最大公约数的递推公式 ,并说明更相减损术和辗转相除法分别是 与 的特例。随后切换到 C++ 代码,用 ``、`` 调用 `gcd(a,b)`,终端输出 24,验证 。讲解者还提醒演示环境因 C++ 版本较新可直接使用 `gcd`,考试环境可能需要自行实现。 片段先用 C++ 代码枚举 到 ,检查 是否总等于 ;终端只输出星号,说明测试范围内没有反例。随后切换到讲义,给出最大公约数递推公式 ,并说明两个特例: 得到更相减损术 , 得到辗转相除法 。
在学习检查器中查看要点和时刻,或切换阅读标签查看完整笔记。
依据视频画面与讲解整理,并非逐字语音转写。
视频开头展示一份深色背景文档,标题为“两个数的最大公约数的递推公式”。讲解者先说明本节目标是求两个数最大公约数的递推公式,并强调对新学竞赛而言掌握一个核心公式即可。
文档给出核心公式:对于任意整数 ,有 。这里的 是可任取的整数参数, 是被求最大公约数的两个整数。
紧接着,文档把该公式 specialize 为两个常见方法。第一,令 ,得到更相减损术:。这一步只是把 中的 替换为 1。
第二,令 ,得到辗转相除法:。视频直接给出这一结论;补充来看,通常是因为 。
画面随后切到 C++ 代码编辑器。讲解者开始举数值例子,在 `main` 函数中声明 `const int ;` 和 `const int ;`,准备计算这两个整数的最大公约数。
代码写入 `cout << gcd(a, b) << endl;` 并运行。终端输出 `24`,因此示例验证了 。讲解者也口头确认“算出来等于 24”。
讲解者解释这里能直接写 `gcd(a,b)`,是因为他使用的 C++ 版本较新,环境中自带该函数。但他随即提醒,考试时的 C++ 编译器版本未必这么新,届时可能需要自己实现 gcd 函数。
之后,讲解者把示例结果记为 时的最大公约数答案 24,并继续在代码中加入 `const int c = gcd(a, b);`,为后续讨论做准备。
片段末尾,讲解者回到参数 的范围,说可以令 从负的 1024 到正的 1024,并在代码中写出 `for (int ;k<=1024;++k)`。他开始询问是否存在某个 使 满足后续条件,但句子在片段结束前未说完。
画面左侧是 VS Code 中的 C++ 程序,右侧是终端。代码设置 `const int ;`、`const int ;`、`const int c = gcd(a, b);`,然后用 `for (int ; k<=1024; ++k)` 遍历整数 。循环体内检查 `if (c != gcd(b, ))`,若不相等就输出当前 。
为了标记程序完整运行结束,代码最后加入 `cout << "**********" << endl;`。讲解者说明这堆星号只是程序运行完成的标记。
终端重新编译运行后只显示 `**********`,没有显示任何 。由于程序只在 `c != gcd(b, )` 时输出 ,这说明在测试范围 内没有找到反例。
讲解者据此总结:对于任意整数 , 总是成立。这里的数学内容是最大公约数在把第一参数替换为 、并交换参数顺序后保持不变。
画面切换到黑底白字讲义,标题为“1 两个数的最大公约数的递推公式”。正文写出“对于任意整数 都有:”。这是本片段的核心递推公式。
讲义继续展示两个特例。第1.1节“更相减损术”写道:“令 ,就得到更相减损术:。”这一步只是把一般公式中的 代入 1,因此 变成 。
第1.2节“辗转相除法”写道:“令 ,就得到辗转相除法:。”讲解者解释 是 除以 的商,因此 是被除数减去商乘以除数,即余数 。
画面中用粉色手写标注在 上方写出 ,并用箭头指向下方的 。这个视觉步骤把一般递推公式与辗转相除法连接起来,说明后者是前者在 时的特例。
视频给出的核心公式是:对于任意整数 ,。讲解者强调这是求两个数最大公约数时需要掌握的关键递推关系。
令核心公式中的 ,得到 。这就是文档中标注的更相减损术,本质上是每次用两数差替换其中一个参数。
令核心公式中的 ,文档直接给出 。补充解释:通常因为 ,所以它也是核心公式的特例。
视频在 C++ 代码中设置 ``、``,调用 `gcd(a,b)` 并输出结果。终端显示 `24`,因此示例验证 。
讲解者说明演示环境可以直接调用 `gcd(a,b)`,是因为所用 C++ 版本较新;但考试环境的编译器版本可能较旧,不能假定该函数一定存在,必要时需要自行实现。
视频给出的核心公式是:对于任意整数 ,。它表示计算两个整数的最大公约数时,可以把其中一个参数替换为另一个参数的整数倍差,并交换参数位置,结果不变。代码示例用 、 和 做枚举检验,终端没有输出任何反例 。
更相减损术是递推公式 在 时的特例。代入 后,第二参数 变为 ,因此得到 。讲义第1.1节明确写出这一推导。
辗转相除法是递推公式 在 时的特例。此时 ,讲解者说明这是被除数减去商乘以除数,等于余数 ,因此得到 。视频未明确说明除法要求 。
代码先令 、、,再遍历 到 。若出现 ,程序输出该 ;循环结束后输出 `**********` 作为完成标记。终端只显示 `**********`,说明测试范围内没有发现反例。
按知识点查看条件、步骤和证据。补充解释与视频直接内容分别标明。
文档中反复出现 ,代码中调用 。
讲解者多次说“最大公约数”。
两个整数的最大公约数函数。
视频未说明具体定义域;示例中使用非负整数。
文档公式写为 。
代码中声明 `const int ;` 与 `const int ;`。
参与求最大公约数的两个整数。
示例中为整数;视频未给出一般限制。
文档写“对于任意整数 都有:”。
讲解者说“首先设 为任意的整数”。
代码循环写为 `for (int ;k<=1024;++k)`。
递推公式中可任取的整数参数。
任意整数。
文档写 。
视频未解释 `mod` 的取余定义、符号约定或 时的处理。
辗转相除法公式中的取余项。
视频未说明。
文档写“令 ”。
视频未说明 时该表达式无定义。
对 取向下取整得到的整数商。
视频未说明。
代码中出现 `const int ;`、`const int ;`、`for (int ;k<=1024;++k)`。
`int`
C++ 中用于声明示例变量的整数类型。
视频未说明取值范围。
代码中写 `cout << gcd(a, b) << endl;`。
讲解者说“我这里直接用了 gcd 这个函数……我的 C++ 的版本现在比较新,所以它自带了 gcd 这个函数”。
视频未说明所用标准库头文件;画面可见 `#include <bits/stdc++.h>`。
`gcd(a, b)`
C++ 代码中对最大公约数函数的调用。
示例中传入两个 `int`。
代码第6行 `const int ;`;讲义第1节公式 中出现
讲解者在推导 时说“ 除以 的商”
a
参与最大公约数计算的第一整数;在代码示例中取值为 24
整数
代码第7行 `const int ;`;讲义第1节公式 中出现
讲解者说“ 除以 下下去整”
b
参与最大公约数计算的第二整数;在代码示例中取值为 504
整数
代码第8行 `const int c = gcd(a, b);`;第11行 `if (c != gcd(b, ))`
讲解者说“如果 c 不等于它”
c
代码中保存 结果的变量
整数
代码第10行 `for (int ; k<=1024; ++k)`;讲义第1节“对于任意整数 都有:”
讲解者说“对于任意的 ”“比如说 等于 1 的时候”“令 等于 除以 下下去整”
k
递推公式中的整数参数;代码中遍历范围为 -1024 到 1024
整数
代码第8行 `gcd(a, b)`;讲义第1节公式
讲解者读出“gcd a b 等于 gcd b a 减 k 倍的 b”
最大公约数函数
作用于两个整数,返回整数
文档标题为“两个数的最大公约数的递推公式”。
文档正文写“对于任意整数 都有:”。
讲解者说“这一次呢我们来讲一下求两个数的最大公约数的递推公式”“首先设 为任意的整数,则 和 的最大公约数等于 减去 倍的 的最大公约数”。
视频给出的核心公式把 转化为 ,其中 可任取整数。讲解者强调对新学竞赛而言掌握这一个公式即可。
为任意整数。
视频未说明 的额外限制。
文档小节标题为“1.1 更相减损术”。
文档写“令 ,就得到更相减损术:”。
这是核心递推公式在 时的特例,每次把第一参数替换为两数之差。
由核心公式令 得到。
视频未说明 的大小关系或正负限制。
文档小节标题为“1.2 辗转相除法”。
文档写“令 ,就得到辗转相除法:”。
视频未解释 `mod` 的定义、 的处理或向下取整商与余数的关系。
这是核心递推公式在 时的特例,把第一参数替换为 除以 的余数。
由核心公式令 得到。
视频未说明 这一通常所需前提。
代码中调用 `gcd(a, b)`。
讲解者说“我这里直接用了 gcd 这个函数,那是因为我的 C++ 的版本啊现在比较新啊,所以它自带了 gcd 这个函数”。
讲解者又说“但是你考试的时候那个 C++ 编译器的版本不一定有这么新啊,所以你考试的时候那个 gcd 这个函数也要自己实现的啊,我们等会儿再讲怎么实现的啊”。
视频未说明具体 C++ 标准版本或头文件;画面可见 `#include <bits/stdc++.h>`。
视频用较新的 C++ 环境演示直接调用 `gcd(a,b)` 计算最大公约数,同时提醒考试环境未必支持该内置函数,需要自行实现。
视频称当前 C++ 版本较新。
视频未说明具体标准版本。
讲义标题“1 两个数的最大公约数的递推公式”;正文“对于任意整数 都有:”
讲解者说“对于任意的 ,gcd a b 等于 gcd b a 减 倍的 ,总是成立的”“我们要掌握的第一个系统化的专业的递推公式”
视频给出最大公约数的递推恒等式:对任意整数 ,。该公式把 的最大公约数转化为 的最大公约数,是后续更相减损术和辗转相除法的统一来源。
为整数
为任意整数
讲义第1.1节“更相减损术”;“令 ,就得到更相减损术:”
讲解者说“比如说 等于 1 的时候,我们就得到 gcd a b 等于 gcd b a 减 b,这就是大名鼎鼎的更相减损术”
在递推公式 中取 ,得到 。视频将此特例命名为更相减损术。
为整数
讲义第1.2节“辗转相除法”;“令 ,就得到辗转相除法:”
讲解者说“如果令 等于 除以 下下去整……我们就得到 gcd a b 等于 gcd b a 模 b 的余数,这个就是大名鼎鼎的辗转相除法”
在递推公式 中取 ,则 是 除以 的余数,因此得到 。视频将此特例命名为辗转相除法。
为整数
视频未说明
文档写“对于任意整数 都有:”。
讲解者复述该公式并称“就是这个公式啊”。
视频未给出证明。
对于任意整数 ,有 。
为任意整数。
视频未说明 的额外限制。
对任意整数 成立。
文档写“令 ,就得到更相减损术:”。
令 时,核心递推公式化为 。
核心公式成立。
取 。
在视频给出的公式框架下直接代入。
文档写“令 ,就得到辗转相除法:”。
视频未说明 以及 `mod` 的精确定义。
令 时,核心递推公式化为 。
核心公式成立。
取 。
视频未说明但通常需 。
在视频给出的公式框架下直接代入。
代码中 `const int ;`、`const int ;`。
终端输出 `24`。
讲解者说“算出来等于 24 啊”“当 的时候,它们的最大公约数的答案是 24”。
在该示例中,。
。
。
针对给定数值实例。
讲解者说“但是你考试的时候那个 C++ 编译器的版本不一定有这么新啊,所以你考试的时候那个 gcd 这个函数也要自己实现的啊”。
视频未说明具体考试平台或编译器版本。
视频提醒考试时 C++ 编译器版本可能较旧,不能假定 `gcd` 函数一定可用,需要自行实现。
考试环境的 C++ 编译器版本可能不如演示环境新。
视频以一般性提醒表述,未给出形式化量词。
讲解者说“也就是说对于任意的 ,gcd a b 等于 gcd b a 减 倍的 ,总是成立的”
讲义第1节写出“对于任意整数 都有:”
终端运行程序后只输出 `**********`,没有输出任何使条件 `c != gcd(b, )` 成立的
对于任意整数 ,都有 。
为整数
为任意整数
任意整数
讲义第1.1节“令 ,就得到更相减损术:”
讲解者说“ 等于 1 的时候,我们就得到 gcd a b 等于 gcd b a 减 b,这就是大名鼎鼎的更相减损术”
令 ,递推公式 化为 。
为整数
存在特定取值
讲义第1.2节“令 ,就得到辗转相除法:”
讲解者说“如果令 等于 除以 下下去整……我们就得到 gcd a b 等于 gcd b a 模 b 的余数,这个就是大名鼎鼎的辗转相除法”
视频未明确说明 这一除法前提
令 ,则 ,从而 。
为整数
视频未说明
存在特定取值
文档先给出 ,随后写“令 ,就得到更相减损术:”。
从视频给出的核心递推公式出发。
文档直接给出该公式。
将参数 取为 1。
文档写“令 ”。
代入后得到更相减损术形式。
把 代入 。
更相减损术 是核心递推公式在 时的特例。
文档先给出 ,随后写“令 ,就得到辗转相除法:”。
视频未展示从 到 的中间说明。
从视频给出的核心递推公式出发。
文档直接给出该公式。
将参数 取为 的向下取整。
文档写“令 ”。
代入后得到辗转相除法形式。
文档直接给出该结论;补充解释:通常因为 。
辗转相除法 是核心递推公式在 时的特例。
代码设置 `const int ;`、`const int ;`。
终端输出 `24`。
讲解者说“算出来等于 24 啊”。
设定示例数值。
代码中声明这两个常量。
调用最大公约数函数计算示例值。
代码写 `cout << gcd(a, b) << endl;`。
程序输出结果为 24。
终端显示 `24`,讲解者也口头确认。
示例数值 时,视频通过程序输出验证 。
代码第6-12行:`const int ; const int ; const int c = gcd(a, b); for (int ; k<=1024; ++k) { if (c != gcd(b, )) { cout << k << endl; } }`
终端第31-33秒显示编译运行后输出 `**********`,没有输出任何 值
讲解者说“你会发现啊,这个程序是不是只输出了一堆星号”“也就是说对于任意的 ,gcd a b 等于 gcd b a 减 倍的 ,总是成立的”
代码中 `#define int int64_t` 将 `int` 重定义为 64 位整数,但视频未解释其对示例数值范围的影响
代码先固定 、,并把 存入变量 。
视频代码第6-8行直接给出。
程序遍历整数 从 -1024 到 1024,检查 是否不等于 。
视频代码第10-11行直接给出。
运行结果没有出现任何满足 `c != gcd(b, )` 的 ,只输出循环结束后的星号标记。
终端第31-33秒显示输出为 `**********`。
由测试范围内未找到反例,讲解者据此说明该递推等式对任意整数 成立。
讲解者在第39-48秒总结“对于任意的 ……总是成立的”。
代码枚举验证支持 在测试范围内无反例,讲解者将其推广为任意整数 下成立。
讲义第1节 ;第1.1节“令 ,就得到更相减损术:”
讲解者说“比如说 等于 1 的时候,我们就得到 gcd a b 等于 gcd b a 减 b,这就是大名鼎鼎的更相减损术”
从视频给出的一般递推公式出发。
讲义第1节公式。
令参数 取 1。
讲义第1.1节“令 ”。
代入后得到更相减损术形式。
将 代入 得 。
更相减损术 是一般递推公式在 时的特例。
讲义第1节 ;第1.2节“令 ,就得到辗转相除法:”
讲解者说“ 除以 下下去整就是 除以 的商”“被除数减去商乘以除数就等于余数”
第99-107秒在公式 上方手写标注 ,随后指向
视频未明确说明 这一除法前提
从视频给出的一般递推公式出发。
讲义第1节公式。
令参数 取 除以 向下取整,即商。
讲义第1.2节“令 ”;讲解者称其为“ 除以 的商”。
把 代入第二参数。
代数代入。
讲解者说明被除数减去商乘以除数等于余数。
讲解者第107-112秒口述“被除数减去商乘以除数就等于余数”。
得到辗转相除法形式。
讲义第1.2节公式。
辗转相除法 是一般递推公式在 时的特例。
代码中 `const int ;`、`const int ;`、`cout << gcd(a, b) << endl;`。
终端输出 `24`。
讲解者说“比如说我们举一个例子”“令整数 等于……24”“令整数 等于……504”“算出来等于 24 啊”。
给定两个整数 、,求它们的最大公约数。
。
。
使用 C++ 代码调用 `gcd(a,b)`。
计算 并输出结果。
在代码中声明第一个整数。
画面可见代码行。
在代码中声明第二个整数。
画面可见代码行。
调用 `gcd` 函数并输出结果。
画面可见代码行;讲解者说明直接使用 C++ 自带的 `gcd` 函数。
终端显示程序输出。
画面终端区域显示 `24`。
。
视频通过运行 C++ 程序并在终端输出 24 来验证结果。
代码第6-15行完整可见:`const int ; const int ; const int c = gcd(a, b); for (int ; k<=1024; ++k) { if (c != gcd(b, )) { cout << k << endl; } } cout << "**********" << endl;`
终端第31-33秒显示 `$ .cpp && ./a.out` 后输出 `**********`
讲解者说“你会发现啊,这个程序是不是只输出了一堆星号”
视频未展示 `gcd` 函数的实现,只展示调用结果
给定 、,令 ,遍历整数 从 -1024 到 1024,检查是否存在 。
判断测试范围内是否有 使 。
先计算并保存 。
代码第8行 `const int c = gcd(a, b);`。
对每个整数 检查等式是否失败,若失败则输出 。
代码第10-12行。
循环结束后输出星号标记,表示程序运行完成。
代码第15行;讲解者说“为了标称我整个程序已经运行完了,我们最后输出一堆星号”。
实际终端只显示星号,没有显示任何 。
终端第31-33秒输出。
在 的测试范围内没有发现反例,程序只输出 `**********`。
终端输出中没有任何 值,只有循环结束标记 `**********`。
画面为深色背景的文档页面,标题为“两个数的最大公约数的递推公式”。
页面依次显示核心公式、1.1 更相减损术、1.2 辗转相除法。
鼠标在公式附近移动并选中部分文本。
标题“两个数的最大公约数的递推公式”。
公式 。
小节“1.1 更相减损术”。
公式 。
小节“1.2 辗转相除法”。
公式 。
讲解者从总公式讲到两个特例。
鼠标在公式周围指示文本。
三个公式均以 为对象。
文档结构保持为总公式加两个小节。
画面把更相减损术和辗转相除法都呈现为同一个整数 递推公式的特例。
画面切换到代码编辑器,显示 C++ 程序。
代码包含 `#include <bits/stdc++.h>`、`using namespace std;`、`signed main()`、`const int ;`、`const int ;`、`cout << gcd(a, b) << endl;`。
右侧终端显示编译命令和输出 `24`。
讲解者在编辑器中输入代码、运行程序,并继续添加 `const int c = gcd(a, b);` 与 `for (int ;k<=1024;++k)`。
终端中曾出现一次 `g++ aa.cpp` 的文件名错误提示,随后改为 `.cpp && ./a.out`;该细节不影响 gcd 示例结果。
C++ 源代码编辑区。
终端输出区。
变量 `a`、`b`、`c` 和循环变量 `k`。
函数调用 `gcd(a, b)`。
代码从无输出语句变为调用 `gcd(a,b)`。
终端从空或报错状态变为输出 `24`。
后续新增变量 `c` 和循环 `for (int ;k<=1024;++k)`。
示例数值始终为 、。
核心演示对象是 `gcd(a,b)` 的计算。
画面用实际程序运行验证 ,并开始把抽象参数 转化为可枚举的整数循环。
左侧 VS Code 编辑器显示 C++ 代码;右侧终端显示 `$ .cpp && ./a.out` 及输出 `**********`
第0-26秒代码逐步补全:先出现 `gcd(b, )`,再包入 `if (c != ...)`,随后加入 `cout << k << endl;`,最后加入 `cout << "**********" << endl;`
VS Code 代码编辑器
终端窗口
C++ 代码
编译命令
程序输出
代码从含语法错误的 `gcd(b, )` 补全为 `if (c != gcd(b, ))`
循环体加入 `cout << k << endl;`
程序末尾加入 `cout << "**********" << endl;`
终端从旧输出 `24` 变为重新编译后的 `**********`
变量 、 保持不变
循环范围 到 保持不变
画面通过枚举 并只在等式失败时输出 ,用终端只输出星号来展示测试范围内没有反例。
第48秒切换到黑底白字讲义,标题“1 两个数的最大公约数的递推公式”,正文“对于任意整数 都有:”
第69秒后可见第1.1节“更相减损术”和第1.2节“辗转相除法”及其公式
第99-107秒在 上方手写粉色标注 ,并用箭头指向下方
讲义标题
一般递推公式
更相减损术小节
辗转相除法小节
粉色手写标注
箭头
页面从代码环境切换到讲义
讲解者用粉色笔在一般公式的第二参数上写出
箭头把该表达式与 联系起来
一般公式 始终作为母公式出现
两个特例分别对应 和
视觉标注把一般递推式中的 具体化为余数 ,说明辗转相除法是一般公式的代入特例。
讲解者说“我这里直接用了 gcd 这个函数,那是因为我的 C++ 的版本啊现在比较新啊,所以它自带了 gcd 这个函数”。
讲解者接着说“但是你考试的时候那个 C++ 编译器的版本不一定有这么新啊,所以你考试的时候那个 gcd 这个函数也要自己实现的啊”。
看到演示中直接调用 `gcd(a,b)` 就认为所有 C++ 考试环境都能使用该函数。
视频明确提醒演示环境 C++ 版本较新,考试编译器版本可能较旧,届时需要自行实现 `gcd`。
讲解者说“你会发现啊,这个程序是不是只输出了一堆星号,对吧?能明白,也就是说对于任意的 ,gcd a b 等于 gcd b a 减 倍的 ,总是成立的”
终端只显示 `**********`,没有显示任何
看到终端只输出星号,可能误以为程序没有进行 gcd 比较。
视频代码设计为只有当 `c != gcd(b, )` 时才输出对应 ;没有输出 而只输出末尾星号,表示测试范围内未发现反例。
文档先给出核心公式,再写“令 ,就得到更相减损术”。
更相减损术是核心递推公式取 的特例。
文档先给出核心公式,再写“令 ,就得到辗转相除法”。
辗转相除法是核心递推公式取 的特例。
代码调用 `gcd(a,b)` 计算示例值。
讲解者先讲 gcd 递推公式,随后举例计算 。
视频未展示手工套用递推公式的完整过程,而是用库函数直接计算。
示例用具体数值演示最大公约数计算,呼应前面关于 gcd 公式的主题。
讲解者说演示环境可直接用 `gcd`,但考试时可能要自己实现。
视频把“直接调用现成 `gcd` 函数”和“需要理解并自行实现 gcd 递推方法”作对比。
讲义第1节一般公式 ;第1.1节“令 ,就得到更相减损术:”
更相减损术是递推公式在 时的特例。
讲义第1节一般公式 ;第1.2节“令 ,就得到辗转相除法:”
辗转相除法是递推公式在 时的特例。
代码枚举 并检查 `c != gcd(b, )`;终端只输出 `**********`
讲解者由“只输出了一堆星号”推出“对于任意的 ……总是成立的”
代码只验证有限范围 ,讲解者口头推广到任意整数
代码示例用于支持任意整数 下 gcd 不变性的命题。
文档标题和核心公式均可见。
文档写“令 ,就得到更相减损术”。
文档写“令 ,就得到辗转相除法”。
代码设置 ``、``,终端输出 `24`。
讲解者解释可直接用 `gcd` 是因为 C++ 版本较新,并提醒考试可能要自己实现。
讲义第1节“对于任意整数 都有:”
终端只输出 `**********`
讲解者解释“只输出了一堆星号”意味着没有 使等式失败
讲义第1.1节“令 ,就得到更相减损术:”
讲义第1.2节“令 ,就得到辗转相除法:”
手写标注 指向
已覆盖 · 文档画面与讲解覆盖核心 gcd 递推公式及其两个特例。
已覆盖 · 代码编辑器与终端演示 `gcd(24,504)` 的数值结果,并讨论 C++ 内置 `gcd` 的使用限制。
已覆盖 · 代码编写、编译运行和终端输出验证 gcd 递推不变性。
已覆盖 · 讲义展示两个数的最大公约数的递推公式。
已覆盖 · 讲义展示更相减损术作为 的特例。
已覆盖 · 讲义和手写标注展示辗转相除法作为 k=⌊⌋ 的特例。
38 至 175 秒的 C++ 示例算出 gcd(24,504)=24,并对 -1024 到 1024 的整数 k 检验 gcd(504,)。终端在该有限范围内未报告反例;公开审核材料明确说明有限测试不是一般证明。
175 至 254 秒先给出 gcd(a,b)=gcd(b,a-kb),令 得更相减损术,再令 k=floor(),用手写箭头把 a-floor()b 与 a mod b 对应起来,从而得到 gcd(a,b)=gcd(b,a mod b)。审核材料保留 b 非零及余数约定的缺失,因此归为讲解而非证明。