【发布时间】:2010-10-07 20:52:19
【问题描述】:
我知道以下不是生成素数列表的最快方法,但是我提出了自己的问题,并且在谷歌搜索之前编写了以下程序。它适用于
它能够计算的最后一个素数是 42751,然后它会说“分段错误”。
from sys import argv, exit, setrecursionlimit
def isPrime(no, halfNo, x = 3):
# if counted through and all numbers from 3 too x are not factors is prime
if x > halfNo:
print no
return 1
# is x a factor?
if no % x == 0:
return 0
else:
isPrime(no, halfNo, x + 2)
path, limLow, limHigh = argv
limLow = int(limLow)
limHigh = int(limHigh)
setrecursionlimit(limHigh)
# negitive numbers, 0 and 1 are not primes so answer invalid
if limLow < 2:
exit('Invalid input');
# if lower limit is even its not prime so increase by 1
if limLow % 2 == 0:
limLow += 1
while (limLow <= limHigh):
isPrime(limLow, limLow / 2)
limLow += 2
【问题讨论】:
-
方法我指的是计算方法(即我没有使用筛算法)而不是递归函数中的方法。循环或其他方法。很抱歉造成混乱。
标签: python segmentation-fault primes