当前位置: 首页 > 知识库问答 >
问题:

如何执行“超长”整数的乘法和除法?

皇甫夕
2023-03-14

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

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

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

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

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

共有2个答案

何承
2023-03-14

所有表达式的结果都将是非常大的数字,超出偶数长int或长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-乘法大整数

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

极大整数乘法和加法

郑琦
2023-03-14

如果您不能编写自己的函数,只需使用GMP库,

http://gmplib.org/

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

 类似资料:
  • 查看编译器生成的x86程序集,我注意到(无符号)整数除法有时被实现为整数乘法。这些优化似乎遵循以下形式: 例如,执行除以9: 除以3将使用与<code>0x55555555 1</code>的乘法,依此类推。 利用< code>mul指令将结果的高部分存储在< code>edx寄存器中这一事实,可以使用与幻值的单次乘法来获得除法的最终结果。(尽管这种优化有时在最后与逐位移位结合使用。) 我想了解一

  • 3、ASCII码乘调整指令AAM(AsciiAdjust After Multiplication) 该指令是用于调整寄存器AL之值,该值是由二个单BCD码字节用无符号乘指令MUL所得的积。其调整规则如下: AH←AL/10(商),AL←AL%10(余数) 指令的格式:AAM 受影响的标志位:PF、SF和ZF(AF、CF和OF等都是无定义) 例如: MOV AL,9 MOV BL, 8 MUL B

  • 问题内容: 我在考虑使用C#或Java之类的语言时如何显示分页控件。 如果我有x个项目想要以每页y个块的形式显示,那么需要多少个页面? 问题答案: Ian提供的整数数学解决方案很好,但存在整数溢出错误。假设变量为all ,则解决方案可以重写为使用数学运算并避免错误: 如果为,则错误仍然存​​在。模数解决方案没有错误。

  • 问题内容: 我在C ++编写一个程序来找到所有的解决方案一b = c ^,其中一个,b和c ^一起使用所有的数字0-9只出现一次。该程序循环了a和b的值,并且每次在a,b和a b上运行一个数字计数例程,以检查是否满足数字条件。 但是,当a b超出整数限制时,可能会生成伪解。我最终使用如下代码检查了这一点: 有没有更好的测试溢出方式?我知道有些芯片具有发生溢出时设置的内部标志,但我从未见过通过C或C

  • 假设第一个输入行是这样的: 第二输入线为: 输出应为: 我试着把所有的数字放在一个单独的数组里。但我不知道如何找到所说的数组的乘积。输出大小应该是第一个数的大小+第二个数的大小。因此,如果产品大小较小,它应该有一个前导0。

  • 问题内容: 在Java中,有什么方法可以得到2 的乘法的高半部分吗?即由于溢出而消失的部分。(因此128位结果的高64位) 我习惯于在命令执行以下操作的地方编写OpenCL代码:http : //www.khronos.org/registry/cl/sdk/1.0/docs/man/xhtml/mul_hi.html 由于OpenCL可以在我的CPU上有效地执行此操作,因此Java应该也可以执行