当然,第一个错误是
make_pair_table
不调用的函数
get_pairs
但是
get_primes
另一个错误是,每当遇到素数对时,只会将该对中的第一个数字添加到对列表中。例如,对于素数
3, 5, 7, 11
比较3和5,然后加3,然后比较5和7,再加5,但是比较7和11,不加7,即使它是在素数对中。解决这一问题的一种方法是为每一对添加两个素数,但随后必须检查第一个数字是否已经是最后一对的一部分。
for i in range(len(prime_list) - 1):
if prime_list[i + 1] - prime_list[i] == 2:
if pair_list == [] or pair_list[-1] != prime_list[i]:
pair_list.append(prime_list[i])
pair_list.append(prime_list[i + 1])
set
prime_list
prime_list = get_primes(n)
prime_set = set(prime_list)
pair_list = [p for p in prime_list if p + 2 in prime_set or p - 2 in prime_set]
最后,在你的
make_X_table
rows = len(primes) // columns + 1