def isPrime(num):
s=0
for j in range (1, num):
if(num%j==0):
s=s+1
if(s>1):
break
return(s)
a = 10**20;
b = 10**400;
for i in xrange(a, b):
if(isPrime(i)==1 and isPrime(sum(int(x) for x in str(i)))==1):
print('Sum of all digits of', i, 'is', sum(int(x) for x in str(i)))我的目标是输出10^20和10^400内的所有数字,它们的数字相加为素数,以回答以下问题:“在10^20、10^400范围内存在多少个整数,使它们的数字之和是素数?”
在搜索时,我看到这个范围会溢出,xrange会更有效率。当使用xrange时,会出现错误"OverflowError: Python太大,无法转换为C;“。
如何才能输出答案而没有错误?
发布于 2017-05-20 19:55:00
有人问了一个类似于python2.x的问题:Handling big numbers in code,这可能有助于更小的数字.
一般来说,这个通过Quora的答案是非常有用的:https://www.quora.com/How-large-can-Python-handle-big-number和其他人说的一样,它将取决于您有多少内存可用。
来自Quora的文章:
真正的限制取决于Python可以访问的内存量。如果它有1GB可供使用,那就相当于大约80000000008000000000位。因此,这样你就可以得到高达28000000028000000000的数字。如果我们可以使用泰坦超级计算机的600+ TiB的CPU内存专门做数字,我们可以一路走到大约22522252。太多了。
https://stackoverflow.com/questions/44089954
复制相似问题