用于求解线性丢番图方程的算法:ax + by = c

2023-12-01

我在这里寻找整数解决方案。我知道它有无数个从第一对解和 gcd(a,b)|c 导出的解。然而,我们怎样才能找到第一对解呢?有什么算法可以解决这个问题吗?

Thanks,
Chan


请注意,并不总是有解决方案。事实上,只有一个解决方案:c是的倍数gcd(a, b).

也就是说,您可以使用扩展欧几里得算法为了这。

这是一个实现它的 C++ 函数,假设c = gcd(a, b)。我更喜欢使用递归算法:

function extended_gcd(a, b)
    if a mod b = 0
        return {0, 1}
    else
        {x, y} := extended_gcd(b, a mod b)
        return {y, x-(y*(a div b))}

int ExtendedGcd(int a, int b, int &x, int &y)
{
    if (a % b == 0)
    {
        x = 0;
        y = 1;
        return b;
    }

    int newx, newy;
    int ret = ExtendedGcd(b, a % b, newx, newy);

    x = newy;
    y = newx - newy * (a / b);
    return ret;
}

现在如果你有c = k*gcd(a, b) with k > 0,方程变为:

ax + by = k*gcd(a, b) (1)
(a / k)x + (b / k)y = gcd(a, b) (2)

因此,只需找到 (2) 的解,或者找到 (1) 的解并乘以x and y by k.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

用于求解线性丢番图方程的算法:ax + by = c 的相关文章

  • 快速搜索压缩文本文件

    我需要能够在大量压缩文件 txt 中搜索文本 压缩可能会改变为其他东西 甚至成为专有的 我想避免解压所有文件并压缩 编码 搜索字符串并在压缩文件中搜索 这应该可以通过对所有文件使用相同的码本使用霍夫曼压缩来实现 我不想重新发明轮子 所以 任
  • 如何确定算法函数的复杂度?

    您如何知道算法函数对于特定操作是否需要线性 常数 对数时间 它取决于CPU周期吗 您可以通过三种方式 至少 做到这一点 在网上查找算法 看看它是如何描述其时间复杂度的 根据输入大小 自己检查算法 查看嵌套循环和递归条件等内容 以及每个循环运
  • 如何将一组重叠范围划分为不重叠范围?

    假设您有一组范围 0 100 一 0 75 b 95 150 c 120 130 d 显然 这些范围在某些点上重叠 您将如何剖析这些范围以生成不重叠范围的列表 同时保留与其原始范围相关的信息 在本例中为范围后面的字母 例如 运行算法后的上述
  • 在 C++ 中通过引用传递 std 算法谓词

    我正在尝试从 a 中删除元素std list并保留已删除元素的一些统计信息 为此 我使用列表中的remove if 函数 并且我有一个谓词 我想使用这个谓词来收集统计数据 这是谓词的代码 class TestPredicate privat
  • 包围一组点的多边形

    我有一组 S 点 2D 由 x 和 y 定义 我想找到 P 包围该组所有点的最小 含义 具有最少数量的点 多边形 P 是S 有没有已知的算法来计算这个 我在这个领域缺乏文化令人惊讶 感谢您的帮助 对于这个问题有很多算法 它被称为 最小边界框
  • 带路径压缩算法的加权 Quick-Union

    有一种 带路径压缩的加权快速联合 算法 代码 public class WeightedQU private int id private int iz public WeightedQU int N id new int N iz new
  • 生成所有多集大小为 n 的分区的算法

    我一直在试图找出一种方法来生成多重集的所有不同的大小为 n 的分区 但到目前为止却空手而归 首先让我展示一下我想要实现的目标 假设我们有一个输入向量uint32 t std vector
  • 正则表达式允许零,只要它不是第一个数字[重复]

    这个问题在这里已经有答案了 昨天我在这里发布了一个问题正则表达式允许 null 或 1 到 9 数字 https stackoverflow com questions 40354842 regular expression allow n
  • 如何有效地找到距给定点最远的点(从一组点中)?

    我正在寻找一种算法或数据结构来解决以下问题 给你一组点 S 然后你会得到另一个点形式的 Q 查询 对于每个查询 找到集合中距离给定点最远的点 集合中最多有 10 5 个点和 10 5 个查询 所有点的坐标都在 0 到 10 5 范围内 我想
  • JavaScript 数字在内存中的大小都相同吗?

    我正在阅读本书的面向 Web 开发人员的专业 JavaScript 似乎所有 ECMAScript 数字都是 binary64 浮点数 这得到了证实这篇 MDN 文章 https developer mozilla org en US do
  • 找到一条穿过任意节点序列的最短路径?

    In 这个先前的问题 https stackoverflow com questions 7314333 find shortest path from vertex u to v passing through a vertex wOP询
  • 以 O(1) 计算汉明权重 [重复]

    这个问题在这里已经有答案了 在二进制表示中 汉明权重是 1 的数量 我偶然发现了网络并找到了一个 O 1 的答案 v v v gt gt 1 0x55555555 v v 0x33333333 v gt gt 2 0x33333333 in
  • 解开 Knuth 的结:如何重构意大利面条式代码?

    这个问题的灵感来自如何将流程图转化为实施 https stackoverflow com questions 36647765它询问如何通过算法消除goto代码中的语句 这answer https stackoverflow com a 3
  • 如何用约束标记一大组“传递群”?

    在 NealB解决方案之后进行编辑 与以下解决方案相比 NealB的解决方案非常非常快任何另一个 https stackoverflow com q 18033115 answers and 提出了关于 添加约束以提高性能 的新问题 Nea
  • n 或 nlog(n) 比常数时间或对数时间更好吗?

    在 Coursera 上的普林斯顿教程中 讲师解释了遇到的常见增长顺序函数 他说 线性和线性算术运行时间是 我们努力的目标 他的推理是 随着输入大小的增加 运行时间也会增加 我认为这是他犯了错误的地方 因为我之前听过他提到线性增长顺序对于高
  • 如何对对象进行排序? (画家算法)

    所以我有 4 个矩形形状 我正在尝试应用排序算法 画家算法 https en wikipedia org wiki Painter 27s algorithm 来知道我需要先绘制哪些形状 在 3d 中 然后绘制哪个形状 Note 相机位于右
  • 高效列出目录中的所有子目录

    请参阅迄今为止所采取的建议的编辑 我正在尝试使用 WinAPI 和 C 列出给定目录中的所有目录 文件夹 现在我的算法又慢又低效 使用 FindFirstFileEx 打开我正在搜索的文件夹 然后我查看目录中的每个文件 使用 FindNex
  • 将名称字符串编码为唯一的数字

    我有一大堆名字 数以百万计 他们每个人都有一个名字 一个可选的中间名和一个姓氏 我需要将这些名称编码为唯一代表这些名称的数字 编码应该是一对一的 即一个名称只能与一个数字相关联 一个数字只能与一个名称相关联 对此进行编码的明智方法是什么 我
  • 如果数字小于 10,则显示前导零 [重复]

    这个问题在这里已经有答案了 可能的重复 JavaScript 相当于 printf string format https stackoverflow com questions 610406 javascript equivalent t
  • 应用对数来导航树

    我曾经知道一种使用对数从树的一片叶子移动到树的下一个 有序 叶子的方法 我认为它涉及获取 当前 叶子的位置值 排名 并将其用作从根向下到新目标叶子的新遍历的种子 一直使用对数函数测试来确定是否沿着右或左节点向下到达叶子 我已经不记得如何运用

随机推荐

  • 使用 Autodesk A360 中的 URN 创建查看器应用程序

    我创建了一个查看器应用程序 它使用两条腿身份验证并显示已上传到我自己的存储桶的项目 现在 我希望能够查看已上传到 Autodesk A360 的项目 而不是查看自己存储桶中的项目 为此 我已完成以下步骤 实现了三足认证 项目中的A360账号
  • 从元胞数组中的每个元胞中提取特定元素

    我有一个元胞数组A尺寸的10x10 说 每个单元依次包含一个5x20矩阵 我想选择 i j 每个单元格的元素 其中 i j 是循环内的索引 我可以跑4个for循环并轻松得到答案 它may甚至更快 因为已经多次讨论循环可能比 cellfun
  • C# 根据字符串名称实例化一个类

    让多个类做很多事情 我必须实例化其中一个类 填充一些属性并调用一个方法 样本将具有以下方法 例如 public class Method100Response201 public string R1 01 get set public vo
  • 如何在R中计算组合和排列?

    如何计算 R 中组合和排列的数量 The 组合包在 Linux 上安装失败 并显示以下消息 gt install packages Combinations Installing package s into home maxim R x8
  • JSP上传下载视频

    我想设计一个允许管理员下载和上传视频的网站 谁能指导我该怎么做 和上传下载图片一样吗 有网站有例子吗 上传也可以用同样的方法完成 你基本上只需要得到一个InputStream在服务器端 然后您可以写入任何OutputStream你想要 例如
  • Java - 类可以访问其嵌套类的私有字段吗?

    据我了解 私有字段只能在定义它们的类中访问 我有一个基本单链表的代码 public class LinkedList private class Node private String data private Node next priv
  • 使用用户名和密码进行 Flutter Firebase 身份验证

    是否可以使用用户名和密码实施 Firebase 身份验证 不是电子邮件和密码 在 Flutter 中 有没有办法使用 Firebase Auth 插件来做到这一点 从逻辑上讲你可以控制电子邮件地址 我的意思是 如果您愿意 您可以维护电子邮件
  • CSS:将 div 水平设置为 2 行

    可以说我有 div class cont div class single 1 div div class single 2 div div class single 3 div div class single 4 div div cla
  • 在子类的构造函数中使用生成器模式

    我目前正在使用 Builder 模式 严格遵循 Wikipedia 文章中建议的 Java 实现建造者模式 http en wikipedia org wiki Builder pattern 这是一个示例代码 说明了我的实现 public
  • 如何打印 Gremlin 管道/遍历结果

    我在名为的文件中有下面的代码traversal groovy 我从命令行调用gremlin e traversal groovy Begin traversal groovy g TinkerGraphFactory createTinke
  • tkinter - 为什么会有像 bbox 这样的东西?

    现在我更多地使用 tkinter Canvas 我想知道 bbox 的使用 对我来说 我使用 bbox 来获取元素的坐标 但 Canvas 已经有一个方法来返回项目的坐标 那么他们为什么要发明像 bbox 这样的东西呢 对比tcl官方描述h
  • setTimeout不加延迟和立即执行函数一样吗?

    我正在查看网络应用程序中的一些现有代码 我看到了这个 window setTimeout function 这和直接执行函数内容是一样的吗 它不一定会立即运行 也不会显式地将延迟设置为 0 原因是 setTimeout 会从执行队列中删除该
  • MySQL:找出丢失的订单 ID

    我知道这个问题在 StackOverFlow 中被问过好几次 我尝试过其中的一些 但我运气不好 我有一个 MySQL 表 其中有一个字段 orders id 这可能会随机出现在表中 不是按顺序 我需要找出表中缺少哪些 id orders i
  • 用于显示文本模式菜单的库?

    在我正在开发的一个游戏项目中 我的速度严重减慢 甚至到了放弃的地步 因为似乎没有任何库可以简化在文本模式下显示菜单的过程 即 80x25 文本框 command com cmd exe 的本机界面 我需要一些可以提供选择列表的东西 最好包括
  • MVC (5) 根据另一个下拉列表填充[重复]

    这个问题在这里已经有答案了 我知道我可以制作一个包含以下列表的下拉菜单SelectedListItem gt and Html DropDownList someID 和操作系统 我的问题是 如果您有 2 个下拉列表 并且第二个下拉列表取决
  • 如何使用 ROW_NUMBER 对 gridview 和 SQL 自定义查询进行分页

    我有一个执行自定义查询的页面 该查询保存在数据库的某个位置 我需要能够在 gridview 上启用分页 例如 保存在数据库中的查询如下所示 select from requestbases 这将返回 10 000 行 使用下面的方法 我让它
  • mysql从多选中选择最低价格

    表价 user id b01 b02 b03 b04 b05 b06 b07 b08 b09 MP01 21 32 12 34 56 26 21 21 26 MO11 81 332 112 1 12 22 71 17 23 如何从价格 WH
  • 如何在 Spring 批处理中使用决策程序?

    我是 Spring 批次的新手 我创建了一个决策程序 它将 FlowExecutionStatus 返回为 是 否 基于FlowExecutionStatus 我需要打电话step2 or step3 在我下面的代码中 step2 在决胜局
  • WordPress l18n _x() 函数

    我正在尝试理解 WordPress 函数 x 根据 WordPress 网站的解释 在通过上下文消歧时使用 x 示例如下 if false commenttxt commenttxt x Comment noun if false trac
  • 用于求解线性丢番图方程的算法:ax + by = c

    我在这里寻找整数解决方案 我知道它有无数个从第一对解和 gcd a b c 导出的解 然而 我们怎样才能找到第一对解呢 有什么算法可以解决这个问题吗 Thanks Chan 请注意 并不总是有解决方案 事实上 只有一个解决方案 c是的倍数g