大数平方根逐比特验证算法

本文介绍了一种大数平方根的逐比特验证算法,首先阐述了算法的原理,然后详细说明了算法流程,包括设定初始值、循环调整等步骤,并提供了源代码以供参考,最后展示输出结果。
摘要由CSDN通过智能技术生成

原理

待补充

 

假设

大数平方根逐比特验证法算法步骤

设:待求平方根的大数为n;n的2进制表示形式位长为l;

容易验证n的平方根的整数部分2进制表示形式位长为ceil(l/2);

 

算法流程

1)令shift = ceil(l/2)-1;

        令mask = 2^shift

        令sqrt_n = mask;

        令tmp = mask*2^shift

        更新N的值:n=n-tmp;

 

2)如果 shift 大于等于1,进入下一步,否则返回sqrt_n值;

        更新shift:shift=shift-1;

        更新mask = 2^shift;

        令tmp =(2*sqrt_n+mask)*2^shift

        如果tmp < = n:

                sqrt_n = sqrt_n + mask

                n = n-tmp

                跳到步骤2)进行循环;

 

源代码

from math import ceil, sqrt


def bit_by_bit_sqrt(n):
    len_bi_sq
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值