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

初等数论--欧几里得算法

1. 定义

u 0 u 1 ∈ Z , u 1 ≠ 0 , u 1 ∤ u 0 u_0\ u_1\in Z,u_1 \ne0,u_1 \nmid u_0 u0 u1Z,u1=0,u1u0

根据带余除法可得下面一系列等式
u 0 = q 0 u 1 + u 2 0 < u 2 < ∣ u 1 ∣ u 1 = q 0 u 2 + u 3 0 < u 3 < u 2 ⋯ u k − 1 = q k − 1 u k + u k + 1 0 < u k < u k u k = q k u k + 1 \begin{align*} u_0 &=q_0u_1+u_2\quad 0 < u_2 <\lvert u_1\rvert\\ u_1 &=q_0u_2+u_3\quad 0 < u_3 < u_2\\ \cdots \\ u_{k-1} &=q_{k-1}u_k + u_{k+1}\quad 0 < u_k <u_{k}\\ u_k &=q_ku_{k+1} \end{align*} u0u1uk1uk=q0u1+u20<u2<u1=q0u2+u30<u3<u2=qk1uk+uk+10<uk<uk=qkuk+1

我们可以得到
0 < u k + 1 < u k < ⋯ < u 2 < ∣ u 1 ∣ 0 <u_{k+1} <u_k <\cdots<u_2 < \lvert u_1\rvert 0<uk+1<uk<<u2<u1
由于小于 ∣ u 1 ∣ |u_1| u1的正整数只有有限个,所以上面的过

程必定有限。

也就是要么 1 ≠ u k + 1 ∣ u k 1 \ne u_{k+1}\mid u_k 1=uk+1uk, 要么 1 = u k + 1 ∣ u k 1 = u_{k+1} \mid u_k 1=uk+1uk

2. 结论

2.1 最大公因数

u k + 1 u_{k+1} uk+1 u 0 u 1 u_0\ u_1 u0 u1的最大公因数。

引理1
∀ a , b ∈ Z ⇒ ∀ x ∈ Z , gcd ⁡ ( a , b ) = gcd ⁡ ( a , b + a x ) \forall a,b \in Z \Rightarrow\\ \forall x \in Z,\gcd(a,b)=\gcd(a,b+ax) a,bZxZ,gcd(a,b)=gcd(a,b+ax)

运用该引理我们可以得到
gcd ⁡ ( u 0 , u 1 ) = gcd ⁡ ( u 1 , u 2 ) = ⋯ = gcd ⁡ ( u k , u k + 1 ) = u k + 1 \gcd(u_0,u_1)=\gcd(u_1,u_2)=\cdots=\\\gcd (u_k,u_{k+1})=u_{k+1} gcd(u0,u1)=gcd(u1,u2)==gcd(uk,uk+1)=uk+1

2.2 裴祖系数的存在性

∃ x 0 , x 1 ∈ Z , s . t . x 0 u 0 + x 1 u 1 = gcd ⁡ ( u 0 , u 1 ) = u k + 1 \exists x_0,x_1 \in Z, s.t. \quad \\x_0u_0+x_1u_1=\gcd(u_0,u_1)=u_{k+1} x0,x1Z,s.t.x0u0+x1u1=gcd(u0,u1)=uk+1
根据辗转相除法的等式,我们可以从直觉上看出 u 0 , u 1 u_0,u_1 u0,u1的线性组合可以表示 u k + 1 u_{k+1} uk+1

我们可以观察到下面的递推式:

[ u t + 1 u t ] = [ − q t − 1 1 1 0 ] [ u t u t − 1 ] \begin{bmatrix} u_{t+1}\\u_{t} \end{bmatrix}= \begin{bmatrix} -q_{t-1} & 1 \\ 1 & 0 \end{bmatrix} \begin{bmatrix} u_{t}\\u_{t-1} \end{bmatrix} [ut+1ut]=[qt1110][utut1]

因此容易得到
[ u k + 1 u k ] = [ − q k − 1 1 1 0 ] ⋯ [ − q 0 1 1 0 ] [ u 1 u 0 ] \begin{bmatrix} u_{k+1}\\u_{k} \end{bmatrix}=\\ \begin{bmatrix} -q_{k-1} & 1 \\ 1 & 0 \end{bmatrix} \cdots \begin{bmatrix} -q_{0} & 1 \\ 1 & 0 \end{bmatrix} \begin{bmatrix} u_{1}\\u_{0} \end{bmatrix} [uk+1uk]=[qk1110][q0110][u1u0]

2.2 引理1证明

首先 g c d ( a , b ) = g c d ( − a , b ) = g c d ( a , − b ) = g c d ( ∣ a ∣ , ∣ b ∣ ) gcd(a,b) =gcd(-a,b)=gcd(a,-b)=gcd(|a|,|b|) gcd(a,b)=gcd(a,b)=gcd(a,b)=gcd(a,b)

因此我们只需要考虑 a , b > 0 a,b>0 a,b>0的情况。

容易得到 g c d ( a , b ) < min ⁡ ( a , b ) gcd(a,b)< \min(a,b) gcd(a,b)<min(a,b)

g c d ( a x , a ) = a gcd(ax,a)=a gcd(ax,a)=a,即 ∀ d ∣ a ⇒ d ∣ a x \forall d \mid a \Rightarrow d \mid ax dadax.

因此 ∀ d ∣ a , d ∣ b + a x ⇔ ∀ d ∣ a , d ∣ b \forall d \mid a,d \mid b+ax \Leftrightarrow \forall d \mid a,d \mid b da,db+axda,db

g c d ( a , b ) = g c d ( a , b + a x ) gcd(a,b) = gcd(a,b+ax) gcd(a,b)=gcd(a,b+ax)

3. 实现

  • 递归
int gcd(int a, int b) {return b == 0 ? a : gcd(b, a % b);
}
  • 迭代
int gcd_fast(int a, int b) {while (b) {int tmp = b;b = a % b;if (2 * b > tmp)b = tmp - b;a = tmp;}return a;
}

参考

初等数论

相关文章:

初等数论--欧几里得算法

1. 定义 u 0 u 1 ∈ Z , u 1 ≠ 0 , u 1 ∤ u 0 u_0\ u_1\in Z,u_1 \ne0,u_1 \nmid u_0 u0​ u1​∈Z,u1​0,u1​∤u0​ 根据带余除法可得下面一系列等式 u 0 q 0 u 1 u 2 0 < u 2 < ∣ u 1 ∣ u 1 q 0 u 2 u 3 0 < u 3 < u 2 ⋯ u k − 1 q k − 1 u k …...

阿里云前端自动化部署流程指南

本文详细介绍从前端代码开发到阿里云 OSS/CDN 自动化部署的完整流程。 一、流程概览 © ivwdcwso (ID: u012172506) 1.1 部署流程图 #mermaid-svg-H1LBBmwTHAAF3QTL {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermai…...

EXCEL解决IF函数“您已为此函数输入太多个参数”的报错

IF函数的基本结构是IF(条件, 值为真时的结果, 值为假时的结果)&#xff0c;所以标准的IF函数最多只能有三个参数。当用户输入的参数超过三个时&#xff0c;Excel就会报这个错误。比如多个IF语句叠加&#xff0c;但可能在嵌套的过程中没有正确关闭每个IF函数的括号&#xff0c;导…...

CAS单点登录(第7版)18.日志和审计

如有疑问&#xff0c;请看视频&#xff1a;CAS单点登录&#xff08;第7版&#xff09; 日志和审计 Logging 概述 Logging CAS 提供了一个日志记录工具&#xff0c;用于记录重要信息事件&#xff0c;如身份验证成功和失败;可以对其进行自定义以生成用于故障排除的其他信息。…...

2025年软件测试面试题大全(附答案+文档)

&#x1f345; 点击文末小卡片&#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 一、测试基础 1、测试策略或测试包括哪些&#xff0c;测试要覆盖哪些方面 UI、功能、性能、可靠性、易用性、兼容性、安全性、安装卸载 2、设计测试用例的办法 …...

太空飞船任务,生成一个地球发射、火星着陆以及下一次发射窗口返回地球的动画3D代码

import numpy as np import matplotlib.pyplot as plt from matplotlib.animation import FuncAnimation from mpl_toolkits.mplot3d import Axes3D# 天体参数设置&#xff08;简化模型&#xff09; AU 1.5e8 # 天文单位&#xff08;公里&#xff09; earth_orbital_radius …...

IDEA——Mac版快捷键

目录 按键含义常用组合代码生成快捷键&#xff1a;代码追踪快捷键&#xff1a;高效编辑快捷键&#xff1a;代码重构快捷键&#xff1a;工具类快捷键&#xff1a;常规文件操作快捷键&#xff1a; 按键含义 ⌘ command Command键&#xff08;⌘&#xff09;相当于Windows中的Con…...

智能体系统(AI Agent System)是什么?——从概念解析到企业数字化转型的全景落地及投资视角

文章目录 一、 前言1.1 背景介绍1.2 写作目的 二、 智能体系统及相关概念解析2.1 智能体系统定义2.2 关键概念区分2.2.1 自主代理&#xff08;Autonomous Agent&#xff09;2.2.2 多智能体系统&#xff08;MAS&#xff09;2.2.3 人工智能/机器学习&#xff08;AI/ML&#xff09…...

Vue 前端开发中的路由知识:从入门到精通

文章目录 引言1. Vue Router 简介1.1 安装 Vue Router1.2 配置 Vue Router1.3 在 Vue 实例中使用 Vue Router 2. 路由的基本用法2.1 路由映射2.2 路由视图2.3 路由链接 3. 动态路由3.1 动态路径参数3.2 访问动态参数3.3 响应路由参数的变化 4. 嵌套路由4.1 定义嵌套路由4.2 渲染…...

前端VUE+后端uwsgi 环境搭建

1整体架构 请求流程the web clinet--the web server->the socket->uwsgi--django 第一级的nginx并不是必须的&#xff0c;uwsgi完全可以完成整个的和浏览器交互的流程&#xff1b;在nginx上加上安全性或其他的限制&#xff0c;可以达到保护程序的作用&#xff1b;uWSGI本…...

I2C实践开发 ---【STM32-I2C-HDC1080温湿度采集系统】

I2C实践开发 — STM32-I2C-HDC1080温湿度采集系统 目录 I2C实践开发 --- STM32-I2C-HDC1080温湿度采集系统1. 引言2. 系统架构2.1 硬件架构2.2 软件架构 3. 代码分析3.1 I2C驱动文件 (i2c.h 和 i2c.c)3.2 HDC1080传感器驱动文件 (hdc1080.h 和 hdc1080.c) 4. 功能总结【HDC1080…...

【个人开发】deepspeed+Llama-factory 本地数据多卡Lora微调【完整教程】

文章目录 1.背景2.微调方式2.1 关键环境版本信息2.2 步骤2.2.1 下载llama-factory2.2.2 准备数据集2.2.3 微调模式2.2.3.1 zero-1微调2.2.3.2 zero-2微调2.2.3.3 zero-3微调2.2.3.4 单卡Lora微调 2.2.4 实验2.2.4.1 实验1&#xff1a;多GPU微调-zero12.2.4.2 实验2&#xff1a;…...

浏览器报错:无法访问此网站 无法找到xxx.xxx.net的DNS地址。正在诊断该问题。尝试运行Windows网络诊断。DNS_PROBE_STARTED

&#x1f91f;致敬读者 &#x1f7e9;感谢阅读&#x1f7e6;希望我的文章能帮到您&#x1f7ea;如有兴趣可点关注了解更多内容 &#x1f4d8;博主信息 点击标题&#x1f446;有惊喜 &#x1f4c3;文章前言 &#x1f537;文章均为学习和工作中整理的笔记&#xff0c;分享记录…...

【设计模式】 代理模式(静态代理、动态代理{JDK动态代理、JDK动态代理与CGLIB动态代理的区别})

代理模式 代理模式是一种结构型设计模式&#xff0c;它提供了一种替代访问的方法&#xff0c;即通过代理对象来间接访问目标对象。代理模式可以在不改变原始类代码的情况下&#xff0c;增加额外的功能&#xff0c;如权限控制、日志记录等。 静态代理 静态代理是指创建的或特…...

网络安全-攻击流程-用户层

用户层攻击主要针对操作系统中的用户空间应用程序及用户权限&#xff0c;利用软件漏洞、配置错误或用户行为弱点进行攻击。以下是常见的用户层攻击类型及其流程&#xff0c;以及防御措施&#xff1a; 1. 缓冲区溢出攻击 攻击流程&#xff1a; 目标识别&#xff1a;确定存在漏…...

网络安全等级保护测评(等保测评):全面指南与准备要点

等保测评&#xff0c;全称为“网络安全等级保护测评”&#xff0c;是根据《网络安全法》及《网络安全等级保护条例》等法律法规&#xff0c;对信息系统进行安全等级划分&#xff0c;并依据不同等级的安全保护要求&#xff0c;采用科学方法和技术手段&#xff0c;全面评估信息系…...

具身导航赋能智能物流!OpenBench:智能物流最后一公里语义导航新基准

作者&#xff1a;Junhui Wang, Dongjie Huo, Zehui Xu, Yongliang Shi, Yimin Yan, Yuanxin Wang, Chao Gao, Yan Qiao, Guyue Zhou 单位&#xff1a;澳门科技大学系统工程与协作实验室、智能科学与系统联合实验室&#xff0c;清华大学人工智能产业研究院&#xff08;AIR&…...

详解 本机安装多个MySQL服务【为后续大数据量分库分表奠定基础,以mysql8.0为例,附有图文】

本机安装多个mysql 在电脑上新建mysql8文件夹&#xff0c;然后在mysql8文件下新建mysql3391文件夹。然后找到自己原本mysql的安装目录&#xff0c;我的是E:\software\mysql\one&#xff0c;如图所示&#xff1a; 将次目录下的所有文件全选复制粘贴在mysql3391文件夹下。 然后…...

2025年新趋势:如何利用AI技术优化你的在线帮助中心

在2025年的今天&#xff0c;人工智能&#xff08;AI&#xff09;技术正以惊人的速度改变着我们的世界。从自动驾驶汽车到智能家居&#xff0c;从医疗诊断到金融分析&#xff0c;AI的身影无处不在。而在客户服务领域&#xff0c;AI同样正在发挥着越来越重要的作用。特别是在线帮…...

同花顺Java开发面试题及参考答案 (上)

int 类型占用几个字节&#xff1f;float 类型的数字如何与 0 进行比较&#xff1f; 在 Java 中&#xff0c;int 类型是一种基本数据类型&#xff0c;它占用 4 个字节。一个字节有 8 位&#xff0c;所以 int 类型总共是 32 位。这 32 位可以用来表示不同的整数值&#xff0c;其取…...

Windows下保姆级教程:用TensorRT 8.6.1加速你的YOLOv8模型(从.pt到.trt)

Windows平台YOLOv8模型加速实战&#xff1a;TensorRT 8.6.1全流程解析 在计算机视觉领域&#xff0c;YOLOv8凭借其卓越的检测精度和速度成为工业界的热门选择。然而&#xff0c;当我们需要将训练好的模型部署到实际生产环境时&#xff0c;如何充分发挥硬件性能成为关键挑战。本…...

Windows 11终极优化指南:5个简单步骤让你的系统飞起来

Windows 11终极优化指南&#xff1a;5个简单步骤让你的系统飞起来 【免费下载链接】Win11Debloat A simple, lightweight PowerShell script that allows you to remove pre-installed apps, disable telemetry, as well as perform various other changes to declutter and cu…...

如何在5分钟内掌握Blender的复制粘贴导入导出技巧:Super IO插件完全指南

如何在5分钟内掌握Blender的复制粘贴导入导出技巧&#xff1a;Super IO插件完全指南 【免费下载链接】super_io blender addon for copy paste import / export 项目地址: https://gitcode.com/gh_mirrors/su/super_io 还在为Blender中繁琐的文件操作而烦恼吗&#xff1…...

UiCard:如何通过模块化状态机架构解决卡牌游戏UI的性能与扩展难题

UiCard&#xff1a;如何通过模块化状态机架构解决卡牌游戏UI的性能与扩展难题 【免费下载链接】UiCard Generic UI for card games like Hearthstone, Magic Arena and Slay the Spire... 项目地址: https://gitcode.com/gh_mirrors/ui/UiCard 在数字卡牌游戏领域&#…...

Furion定时任务UI管理界面怎么玩?/myjob路径配置与动态任务增删改查实战

Furion定时任务UI管理界面实战指南&#xff1a;从配置到动态任务管理 在.NET生态系统中&#xff0c;定时任务管理一直是开发者需要面对的基础设施挑战之一。传统方式下&#xff0c;我们往往需要依赖Windows任务计划程序或第三方服务&#xff0c;不仅部署复杂&#xff0c;还缺乏…...

飞控DIY避坑:详解Aocoda F405V2的SPI、UART资源分配与冲突预防(Betaflight/INAV固件)

飞控DIY避坑&#xff1a;详解Aocoda F405V2的SPI、UART资源分配与冲突预防&#xff08;Betaflight/INAV固件&#xff09; 当你拿到一块Aocoda F405V2飞控板时&#xff0c;第一眼可能会被密密麻麻的引脚标注吓到。这块基于STM32F405RGT6或AT32F435RGT7芯片的飞控&#xff0c;虽…...

FFXIV ACT动画跳过插件终极指南:3分钟快速安装,副本效率提升50%

FFXIV ACT动画跳过插件终极指南&#xff1a;3分钟快速安装&#xff0c;副本效率提升50% 【免费下载链接】FFXIV_ACT_CutsceneSkip 项目地址: https://gitcode.com/gh_mirrors/ff/FFXIV_ACT_CutsceneSkip 还在为FFXIV中冗长的副本过场动画烦恼吗&#xff1f;FFXIV_ACT_C…...

基于MCP协议构建YouTube数据连接器,赋能AI助手内容分析

1. 项目概述&#xff1a;一个连接YouTube数据的MCP服务器 最近在折腾AI Agent的生态&#xff0c;发现一个挺有意思的项目叫 youtube-connector-mcp 。简单来说&#xff0c;它是一个实现了Model Context Protocol&#xff08;MCP&#xff09;标准的服务器&#xff0c;专门用来…...

终极B站视频下载指南:DownKyi免费工具的完整使用教程

终极B站视频下载指南&#xff1a;DownKyi免费工具的完整使用教程 【免费下载链接】downkyi 哔哩下载姬downkyi&#xff0c;哔哩哔哩网站视频下载工具&#xff0c;支持批量下载&#xff0c;支持8K、HDR、杜比视界&#xff0c;提供工具箱&#xff08;音视频提取、去水印等&#x…...

为什么你的AI Sandbox永远“半隔离”?——深度拆解Linux命名空间缺陷、GPU共享陷阱与3种绕过检测的隐蔽行为

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;为什么你的AI Sandbox永远“半隔离”&#xff1f;——深度拆解Linux命名空间缺陷、GPU共享陷阱与3种绕过检测的隐蔽行为 Linux 命名空间&#xff08;namespaces&#xff09;常被误认为是强隔离基石&…...