【问题标题】:How to add, subtract, multiply and divide 2 numbers each containing 100 digits in C? (using arrays) [closed]如何在C中加减乘除2个数字,每个数字包含100位数字? (使用数组)[关闭]
【发布时间】:2015-10-11 09:55:54
【问题描述】:

我正在尝试编写一个 C 代码来加、减、乘和除 2 个数字,每个数字包含 100 个数字。这应该包括数组的使用。

谁能给我任何建议,伪代码或示例代码? 为了更清楚 用户将输入 2 个数字(整数) 每个数字可以包含 100 个或更少的数字,即整数 a 可以是 10 或 234 或 43582 或 23456788 或 23445667788 ......等等。整数 b 也是如此。 现在取这两个整数,我必须执行加法,减法,除法,乘法,模数(%)的算术运算

【问题讨论】:

  • @brunch875 C 中哪种标准数据类型可以存储 100 位数字?我认为没有。他想自己实现 BigInt 之类的东西,并询问如何开始。
  • 对于乘法,您可以使用 Karatsuba 算法:en.wikipedia.org/wiki/Karatsuba_algorithm 加法应该相当简单,只需将进位位转移到下一个数组元素。
  • @brunch875 尝试在 C 中的数据类型中拟合 100 位数字
  • @Guillaume:根据 Henry F 的说法,int 类型中可以容纳任意数量的数字,只要它们都是前导零。

标签: c arrays


【解决方案1】:

您可以尝试使用GMP Library,正如question 中所回答的那样。它可以在CC++ 中执行Bigint 操作。另外,如果您对BigintC++ 代码感到满意,您可以查看此blogpost

【讨论】:

  • 嗨 Rahul,你能解释一下吗。GMP 库是用来做什么的??
  • @caitancorreia 试试这个pdf。请搜索更多关于它的信息,我相信你会找到你想知道的。
【解决方案2】:

您正在寻找有关实现任意精度算术的提示。开始阅读这篇文章:https://en.wikipedia.org/wiki/Arbitrary-precision_arithmetic,然后用搜索引擎搜索bignum c code,很容易找到示例实现。避免使用成熟的软件包,例如 gnu MP,因为它们太高级且不是正确的起点。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-03-19
    • 1970-01-01
    • 1970-01-01
    • 2021-03-21
    • 1970-01-01
    • 2019-01-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多