我试图写一个确定性的Miller-Rabin测试的基本实现,但我有限的Python背景正在阻碍。似乎在下面粘贴的程序部分中,外部for循环在内部while循环完成后跳过其他每个元素。关于为什么会出现这种情况的任何想法?
for integer in integers:
print("The current integer is " + str(integer))
i = 0
while i < len(powers):
print(str(integer) + "^" + str(powers[i]) + " + 1 mod N =")
print((pow(integer,powers[i],N) + 1)%N)
if (pow(integer,powers[i],N) + 1)%N == 0:
integers.remove(integer)
i += 1
break
else:
i += 1
答案 0 :(得分:-5)
将i += 1
放在if
和else
语句
所以
for integer in integers:
print("The current integer is " + str(integer))
i = 0
while i < len(powers):
print(str(integer) + "^" + str(powers[i]) + " + 1 mod N =")
print((pow(integer,powers[i],N) + 1)%N)
if (pow(integer,powers[i],N) + 1)%N == 0:
integers.remove(integer)
break
i += 1