2015-04-02 194 views

回答

1

在循环中,您用作字典中的键的z值始终为g**r % p。这可以让你摆脱z可变的,并直接从r(和gp)计算你的钥匙:

D = {g**r % p: r for r in xrange(m)} 
+0

基本上我想尽可能快地运行循环。重复计算g ** r%p需要比循环多的时间。你知道任何方法吗? – 2015-04-02 17:24:13

+0

嗯,我不认为有任何方法可以在表达式中进行z = z * g%p计算。也许你可以编写一个生成器函数来执行它,然后在理解中将'generator'与'xrange'一起压缩?如果性能比可读性更重要,我会坚持使用你的循环。 – Blckknght 2015-04-02 20:01:21