2017-04-06 29 views
0

我正在嘗試編寫確定性Miller-Rabin測試的基本實現,但我的有限Python背景正在逐漸成型。看起來,在下面粘貼的程序部分中,outer for循環在內部while循環完成之後跳過所有其他元素。有關爲什麼會出現這種情況的任何想法?Python外循環跳過其他每個元素

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

你忘了後添加一個縮進循環,或當你在這裏貼上它沒有它得到了刪除嗎? –

+0

@AquaticallyChallengedFish:對不起,粘貼後失去了縮進。固定。 –

+0

您的代碼片段不完整。 「整數」,「權力」等的價值是什麼?請參見[如何創建最小,完整和可驗證示例](http://stackoverflow.com/help/mcve)。 –

回答

-5

ifelse聲明

i += 1所以

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 
+2

這在句法上與OP的代碼相同。 – Aaron