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

数论问题 - L

数论问题

扩展欧几里得算法初步

算法原理

题目

求二元一次方程 \(ax + by = \gcd(a,b)\) 的一组可行解。

解法

由辗转相除法可知

\[\gcd(a,b) = \gcd(b, a \bmod b) \]

因此要解原方程,只需解

\[bx + (a \bmod b)y = \gcd(b, a \bmod b) \]

不断递归下去,终究有 \(b=0\),此时 \(a = \gcd(a,b)\),代入 \(\begin{cases}x=1 \\ y =0\end{cases}\) 即可。

注意到

\[a \bmod b = a - b \cdot \Big \lfloor \frac{a}{b} \Big \rfloor \]

因此,原方程变为

\[bx + (a - b \cdot \Big \lfloor \frac{a}{b} \Big \rfloor) y = \gcd(a,b) \]

\[ay + b(x - y \cdot \Big \lfloor \frac{a}{b} \Big \rfloor) = \gcd(a,b) \]

注意到上式与原式骨架相同,则每次递归时,解的代换规则为

\[\begin{cases} x = y' \\ y = x' - y' \cdot \Big \lfloor \dfrac ab \Big \rfloor \end{cases} \]

二元一次不定方程计数问题

题目

给定不定方程 \(ax + by = c\),求解的个数。

解法

根据裴蜀定理,方程有整数解当且仅当 \(\gcd(a,b) | ax + by\)

利用扩展欧几里得算法可以求出方程 \(ax + by = \gcd(a,b)\) 的一组特解,记这组解为 \(\{x_0,y_0\}\),并记 \(g = \gcd(a,b)\)。将该方程变形得

\[a \cdot \frac{x_0c}{g} + b \cdot \frac{y_0c}{g} = c \]

因此原方程的一组整数特解 \(\{x_1, y_1\}\) 满足

\[\begin{cases} x_1 = \dfrac{x_0c}{g} \\ x_2 = \dfrac{y_0c}{g} \end{cases} \]

因此

\[\forall d \in \mathbb{Q},\ a(x_1 + db) + b(y_1-da) = c \]

因为需要保证 \(x_1+db,y_1-da \in \mathbb{Z}\),所以只需使得 \(db,da \in \mathbb{Z}\),进而 \(d\) 必须是 \(\dfrac{1}{g}\) 的整数倍,即所有可行的 \(d\) 中正的最小值为 \(\dfrac{1}{g}\)

将其代入,得到最小的整数步长为 \(d_x = \dfrac{b}{g},\ d_y = \dfrac{a}{g}\)

\(\forall s \in \mathbb{Z}\),该方程组的通解为

\[\begin{cases} x = x_1 + sd_x \\ y = y_1 - sd_y \end{cases} \]

界定

\[\begin{cases} x > 0 \\ y > 0 \end{cases} \]

可得

\[\begin{cases} x_1 + sd_x > 0 \\ y_1 - sd_y > 0 \end{cases} \]

\[-\frac{x_1}{d_x} \lt s \lt \frac{y_1}{d_y} \]

由于 \(s \in \mathbb{Z}\),那么

\[\Big \lceil \frac{-x_1 + 1}{d_x} \Big \rceil \le s \le \Big \lfloor \frac{y_1-1}{d_y} \Big \rfloor \]

取值范围的两个端点即为 \(s\) 的最小取值和最大取值。正整数解的个数即为 \(s\) 的取值个数,右界减左界即可。

http://www.jsqmd.com/news/883739/

相关文章:

  • 九江6月雨季来临,房屋漏水怎么办?卫生间免砸砖防水、外墙、屋面+地下室渗漏。权威防水公司靠谱TOP5推荐(2026年6月本地最新深度调研) - 企业资讯
  • 基于ESP32与GPS构建高精度本地NTP时间服务器
  • 大连6月雨季来临,房屋漏水怎么办?卫生间免砸砖防水、外墙、屋面+地下室渗漏。权威防水公司靠谱TOP5推荐(2026年6月本地最新深度调研) - 企业资讯
  • 后台管理系统更新后,优雅地通知用户刷新页面
  • MinIO密码设置保姆级教程:Docker Compose、Linux、Windows三大平台一次搞定
  • 2026上海卫生间防水测评!专治临海湿气渗水,本地四大靠谱补漏品牌盘点 - 资讯焦点
  • 六安6月雨季来临,房屋漏水怎么办?卫生间免砸砖防水、外墙、屋面+地下室渗漏。权威防水公司靠谱TOP5推荐(2026年6月本地最新深度调研) - 企业资讯
  • AlwaysOnTop:Windows窗口置顶工具的终极免费解决方案
  • 电化学镍催化的醇脱氧三氟甲基化反应
  • 从手机导航到厘米级定位:一文看懂GNSS、PPP和RTK到底有啥区别(附应用场景对比)
  • Unlock Music:3分钟学会在浏览器中解密任何加密音乐文件
  • 终极指南:如何用OpenHRMS开源人力资源管理系统提升企业效率
  • 2026桂林防水避坑测评!深挖喀斯特地貌漏水难题,甄选靠谱补漏品牌 - 资讯焦点
  • 终极指南:Windows上直接安装APK文件的完整实践教程
  • 2026贵阳婚姻律师Top5权威榜单:如何选择本地专家? - 资讯焦点
  • 微信小程序开发(七)- uni-app微信小程序商城
  • 鞍山6月雨季来临,房屋漏水怎么办?卫生间免砸砖防水、外墙、屋面+地下室渗漏。权威防水公司靠谱TOP5推荐(2026年6月本地最新深度调研) - 企业资讯
  • 香港全屋定制工厂哪家强?RERA源木匠心为何稳居榜首? - 产品测评官
  • 最长公共子序列---dp
  • 互联网大厂Java面试:从Java SE到Spring Boot的全面探讨
  • 如何高效清理Mac磁盘空间:专业工具Pearcleaner使用指南
  • 南平6月雨季来临,房屋漏水怎么办?卫生间免砸砖防水、外墙、屋面+地下室渗漏。权威防水公司靠谱TOP5推荐(2026年6月本地最新深度调研) - 企业资讯
  • 番茄小说下载器:免费开源工具打造个人数字图书馆终极指南
  • Day4 函数
  • 抖音下载器终极指南:如何快速下载抖音视频和直播回放
  • 马鞍山6月雨季来临,房屋漏水怎么办?卫生间免砸砖防水、外墙、屋面+地下室渗漏。权威防水公司靠谱TOP5推荐(2026年6月本地最新深度调研) - 企业资讯
  • Python Android打包终极指南:5步将Python应用变为Android APK
  • 江苏省丹阳寄快递省钱攻略|本地人私藏靠谱低价寄件渠道,跨省寄件轻松省下一笔钱 - 时讯资讯
  • 2026惠州防水深度测评!破解沿海湿热漏水通病,四大卫生间补漏品牌甄选 - 资讯焦点
  • 如何解锁网易云音乐加密文件?ncmdump让你轻松拥有通用音频格式