【问题标题】:How to perform multiplication and division of "superlong" integers?如何执行“超长”整数的乘法和除法?
【发布时间】:2013-03-26 05:31:10
【问题描述】:

考虑需要处理可以有数百位数字的整数。让我们称它们为“超长”整数。显然,它们不能使用 int 或 long int 等数据类型存储。 “超长”整数可以作为用户的输入,逐位读取,并存储在数组中,超长整数的每个数字在数组中占据一个位置。该问题涉及将两个正的“超长”整数作为用户的输入,逐位数字。每个数字都由用户作为字符输入。正“超长”整数的结尾由 $ 符号的输入和存储来表示。

这里你可以假设正超长整数占用的最大位数是25位。

编写一个能够对这些正超长整数执行以下操作的 C 程序。

  1. 添加两个正超长整数
  2. 从另一个正超长整数中减去一个正超长整数
  3. 两个正超长整数相乘
  4. 将一个正超长整数除以另一个正超长整数
  5. 提供一个正超长整数除以另一个正超长整数的余数
  6. 求两个正超长整数的最大值

我已经完成了编写用于执行两个正超长整数的加法、减法和最大值的函数。我无法执行乘法和除法来分别获得商和余数。

【问题讨论】:

  • 这里有问题吗?
  • 它看起来很像家庭作业,到目前为止没有任何努力,仍然没有问题。
  • '我无法执行乘法和除法来分别得到商和余数。'你在学校没学过长乘法和长除法吗?
  • @Patashu 是的。我已经为 8051 微控制器的此类问题编写了代码。我不擅长用 C 语言。
  • @Maverick 你会如何在 8051 中写出来?你会如何用 psueodocode/pseudo-C 写出来?

标签: c arrays int


【解决方案1】:

如果您无法编写自己的函数,您只需要使用 GMP 库,

http://gmplib.org/

使用它,您将被排序....

【讨论】:

    【解决方案2】:

    所有表达式的结果将是一个非常大的数字,超出了甚至 long int 或 long double 的范围。您必须使用数组在 c 中存储如此大的数字。您必须使用与我们用来将两个数字相乘的相同逻辑,除了将数据存储在我们存储到数组中的普通变量中。

    以下是一些参考链接:

    http://www.cquestions.com/2010/08/multiplication-of-large-numbers-in-c.html

    http://www.cquestions.com/2010/08/division-of-large-numbers-in-c.html

    http://www.thinbasic.com/community/showthread.php?11206-C-multiplying-big-integers

    http://cboard.cprogramming.com/c-programming/114679-multiplying-huge-numbers-integer-arrays.html

    Extremely big integer multiplication and addition

    【讨论】:

      猜你喜欢
      • 2015-08-27
      • 1970-01-01
      • 2014-01-14
      • 2010-09-16
      • 1970-01-01
      • 2023-01-20
      • 1970-01-01
      • 1970-01-01
      • 2011-09-02
      相关资源
      最近更新 更多