-5

我有一个方程((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

我还没有真正尝试过任何东西,我已经放弃了使用发电机的想法。但是,这样做我不确定是否会遇到性能问题。

4

1 回答 1

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   

当您说您还没有真正尝试过任何东西时,请不要尝试优化它!只要得到能产生你想要的东西——然后担心使用生成器或性能问题。

编辑:

你大大改变了你的问题,现在还不清楚你在寻找什么。如果您正在寻找根查找,这里有一些代码

Scipy也有许多寻根方法。

选择一个方向 - 让一些东西运行 - 如果它太慢,请尝试修复它。

于 2012-05-07T22:50:59.633 回答