大数除法,大数辗转相除(密码学第三次实验作业)

本文介绍了如何将大数除法转换为减法运算,并提供了大数辗转相除的代码实现,这是密码学实验中的一项重要内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

大数除法:把除法运算转化为减法运算

代码:

#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
#define N 1000005
char a[N],b[N];
int x[N],y[N],c[N<<1];
//用长度为len1的大整数p1减去长度为len2的大整数p2
// 结果存在p1中,返回值代表结果的长度,不够减返回-1,正好减完返回0
int SubStract( int *k1, int *k2, int len1, int len2 )
{
    if( len1 < len2 )
        return -1;
    if( len1 == len2 )
    {
        //判断k1 > k2
        for(int i=len1-1; i>=0; i-- )
        {
            if( k1[i] > k2[i] )
                break;
            else if( k1[i] < k2[i] )
                return -1;
        }
    }
    for(int i=0; i<=len1-1; i++ )  //从低位开始做减法
    {
        k1[i] -= k2[i];
        if( k1[i] < 0 )          //若p1<0,则需要借位
        {
            k1[i] += 10;         //借1当10
            k1[i+1]--;           //高位减1
        }
    }
    for(int i=len1-1; i>=0; i-- )       //查找结果的最高位
        if( k1[i] )                  //最高位第一个不为0
   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值