本帖最后由 飘飞的白杨 于 2017-2-8 18:34 编辑 def isprime(n):
'''判断是否是素数'''
if n <= 1: return False
if n == 2 or n == 3: return True
if n % 2 == 0: return False
for i in range(3, int(n**0.5)+1, 2):
if n % i == 0: return False
return True
num = 0
for i in range(3, 100000, 2):
if isprime(i*i-(i-1)): num += 1
if isprime(i*i-2*(i-1)): num += 1
if isprime(i*i-3*(i-1)): num += 1
if num/(i*2-1) < 0.1: break
print(i)
改def primes(N):
'''素数表'''
l = int(N**0.5) + 1
prime = [False, False] + [True] * N
for i in range(2, l):
if prime[i]:
for j in range(2, N//i + 1):
if prime[j*i]:
prime[j*i] = False
return tuple(i for i in range(len(prime)) if prime[i])
def isprime(n):
'''判断是否是素数'''
if n <= 1: return False
if n == 2: return True
for i in primes_tuple:
if i*i > n: return True
if n % i == 0: return False
for i in range(primes_tuple[-1]+2, int(n**0.5)+1, 2):
if n % i == 0: return False
return True
X, num = 100000, 0
primes_tuple = primes(X)
for i in range(3, X, 2):
if isprime(i*i-(i-1)): num += 1
if isprime(i*i-2*(i-1)): num += 1
if isprime(i*i-3*(i-1)): num += 1
if num/(i*2-1) < 0.1: break
print(i)
|