如何在Python中计算大数的a^b?

0 投票
6 回答
7628 浏览
提问于 2025-04-15 12:05

我想在Python中计算a^b,也就是很大的数字的幂。

我的代码是这样的:

t=raw_input()
c=[]
for j in range(0,int(t)):
    n=raw_input()
    a=[]
    a,b= (int(i) for i in n.split(' '))
    c.extend(pow(a,b))
for j in c:
    print j

但是我遇到了这样的错误:

raceback (most recent call last):
  File "C:/Python26/lastdig.py", line 7, in <module>
    c.extend(pow(a,b))
TypeError: 'int' object is not iterable

我的问题出在哪里?这样计算大数字的幂有效吗?

6 个回答

2

在我的电脑上,10000**10000这个计算不到一秒就能完成。

你的输入有多大呢?

你的问题和幂运算没有关系。

使用

c.append() 

而不是

c.extend()

c.extend需要一个可迭代的对象(比如列表、元组、集合或者自定义的可迭代对象)作为输入。

2

你可以试试 GMPY。可以试试下面这样的写法:

import gmpy
a = gmpy.mpz(10**10)
b = a**10000000

我不知道你的数字有多“大”,这个方法的速度不是特别快(不过结果是够大的 :P)

3

你用错了extend这个方法。A.extend(B)需要B是一个可迭代的对象,比如列表或者元组。其实你应该用append方法。

t=raw_input()
c=[]
for j in range(0,int(t)):
    n=raw_input()
    a,b= (int(i) for i in n.split(' '))
    c.append( pow(a,b) ) ## or you could extend c.extend( [ pow(a,b) ] ), but thats silly.
for j in c:
    print j

撰写回答