《Ex Machina》 机器姬中的python代码

#bluebook code decryption

import sys

def sieve(m):
#compute primes using sieve of Eratosthenes

	x = [1]*m
	x[1] = 0
	
	for i in range(2, m/2):
		j = 2*i
		while j<m:
			x[j] = 0
			j = j+i
	return x
	
def prime(n, x):
#find nth prime

	i = 1
	j = 1
	while j <= n:
		if x[i] == 1:
			j = j+1
		i = i+1
	
	return i-1
	
#compute bluebook unlock code

x = sieve(10000)

code =  [1206, 301, 304, 5]
key = [1, 1, 2, 2]

sys.stdout.write("".join(chr(i) for i in [73, 83, 66, 78, 32, 61, 32]))

for i in range(0, 4):
	sys.stdout.write(str(prime(code[i], x)*key[i]))
print


你可能感兴趣的:(python,Prime)