我有一个等式((1 -/+ p)/6) % p
,我需要运行几千万个p
的值。
我目前的代码是
primes = [5,7,11,13,17,19,23,29,31,37,41,43,47,
53,59,61,67,71,73,79,83,89,97]
if __name__ == "__main__":
for p in primes:
print ((1 - p)/6) % p, ((1 + p)/6) % p
正如预期的那样,给了我
4 1
6 1
9 2
11 2
14 3
16 3
19 4
24 5
26 5
31 6
34 7
36 7
39 8
44 9
49 10
51 10
56 11
59 12
61 12
66 13
69 14
74 15
81 16
我想知道的是如何获得
1
6
2
11
3
16
4
5
26
31
7
36
8
9
10
51
56
12
61
66
14
15
81
我还没有尝试过任何东西,我已经抛弃了使用发电机的想法。但是,在这样做时,我不确定我是否会遇到性能问题。
答案 0 :(得分:3)
这是你在找什么?
for p in primes:
r1=f(p - 4) % p
r2=((1 - p)/6) % p
if r2==r1:
print r1, r2
else:
print r1, ((1 + p)/6) % p
当你说你还没有尝试过任何东西时,不要尝试优化它!只需得到能够产生你想要的产品 - 然后担心使用发电机或性能问题。
编辑:
你已经大大改变了你的问题,现在还不清楚你在寻找什么。如果您正在寻找根发现,here is some code。
Scipy也有很多根查找方法。
选择一个方向 - 运行一些东西 - 如果它太慢,请尝试修复它。