大数运算python编程实现

本文介绍了如何使用Python编程实现大数的加法、减法、乘法和幂模运算,详细阐述了运算过程,并提供了相应的算法步骤,适用于RSA等大数运算场景。
摘要由CSDN通过智能技术生成

在RSA算法中用到的大数运算

两个大数的加法运算

得到两个大数的列表。类似加法运算考虑进位。新建一个结果列表,列表长度比较长的那个列表长度加1。把两个大数的列表反转,从第一位开始对应位相加,把加的和放到结果列表的对应位。若加的和大于9,则产生进位,把加的和减10放到结果列表的对应位,然后在结果列表的对应位的下一位加1。遍历整个列表得到相加和。把存储结果的列表反转即得到相加的结果。

两个大数的减法运算

得到两个大数的列表。类似减法运算考虑借位。新建一个结果列表,列表长度和较长的那个列表长度一样。从第末尾位开始对应位相减,把减的结果放到结果列表的对应位。若被减数小于减数,则产生借位,把被减数加10之后再减,把被减数的前一位对应的数减1。遍历整个列表得到相减差。存储结果的列表即为相减的结果。最终结果需要去除首端的0.如果所有位都是0,则返回0。

两个大数的乘法运算

将两个大数放到两个列表中,把整个列表翻转,此时列表的低位就是两个大数的低位。然后用两层循环,外层为第二个乘数,对应的位数用i表示,内层为第一个乘数,对应的位数用j表示。然后让外层的每一位分别乘内层的所有位。把乘得的结果放到一个新的列表中,所在的i+j位上。如果这个结果大于9,那么第i+j位放的数为结果求余10,然后再在第i+j+1位放入这个结果整除10所得到的数。最后把新得到的列表反转然后转换为字符串输出即为两个大数相乘的结果。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值