如何在Python中计算大数的a^b?
我想在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