我使用下面的代碼爲在尋找primitive roots模n
的Python:使用Python有效地查找原始根modulo?
代碼:
def gcd(a,b):
while b != 0:
a, b = b, a % b
return a
def primRoots(modulo):
roots = []
required_set = set(num for num in range (1, modulo) if gcd(num, modulo) == 1)
for g in range(1, modulo):
actual_set = set(pow(g, powers) % modulo for powers in range (1, modulo))
if required_set == actual_set:
roots.append(g)
return roots
if __name__ == "__main__":
p = 17
primitive_roots = primRoots(p)
print(primitive_roots)
輸出:從
[3, 5, 6, 7, 10, 11, 12, 14]
代碼片段中提取:Diffie-Hellman (Github)
能否primRoots
方法被簡化或在存儲器使用和性能 /效率方面優化?
請注意'pow'允許第三個參數,模數,比手動應用模數快得多。 – Pete