亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Python如何實現內置函數pow()?

Python如何實現內置函數pow()?

我必須編寫一個程序來計算a**b % c在哪里,b并且c都是很大的數字。如果我只是使用a**b % c,那真的很慢。然后,我發現內置函數pow()可以通過調用來真正快速地做到這一點pow(a, b, c)。我很好奇Python是如何實現的?或者在哪里可以找到實現此功能的源代碼文件?
查看完整描述

3 回答

?
大話西游666

TA貢獻1817條經驗 獲得超14個贊

您可以考慮以下兩種實現方式來(x ** y) % z快速進行計算。


在Python中:


def pow_mod(x, y, z):

    "Calculate (x ** y) % z efficiently."

    number = 1

    while y:

        if y & 1:

            number = number * x % z

        y >>= 1

        x = x * x % z

    return number

在C中:


#include <stdio.h>


unsigned long pow_mod(unsigned short x, unsigned long y, unsigned short z)

{

    unsigned long number = 1;

    while (y)

    {

        if (y & 1)

            number = number * x % z;

        y >>= 1;

        x = (unsigned long)x * x % z;

    }

    return number;

}


int main()

{

    printf("%d\n", pow_mod(63437, 3935969939, 20628));

    return 0;

}


查看完整回答
反對 回復 2019-10-30
?
繁花如伊

TA貢獻2012條經驗 獲得超12個贊

在Python中實現pow(x,n)


def myPow(x, n):

        p = 1

        if n<0:

            x = 1/x

            n = abs(n)


        # Exponentiation by Squaring


        while n:

            if n%2:

                p*= x

            x*=x

            n//=2

        return p

在Python中實現pow(x,n,m)


def myPow(x,n,m):

            p = 1

            if n<0:

                x = 1/x

                n = abs(n)

            while n:

                if n%2:

                    p*= x%m

                x*=x%m

                n//=2

            return p


查看完整回答
反對 回復 2019-10-30
  • 3 回答
  • 0 關注
  • 1195 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號