2017-11-02 17 views
-1
def gcdIter(a, b): 

''' 
a, b: positive integers 

returns: a positive integer, the greatest common divisor of a & b. 
''' 

test = 0 
if a > b: 
    b = test 
else: 
    a = test 
while test != 1: 
    if a%test == 0 and b%test == 0: 
     return test 
    test -= 1 
return 1 

& b의 가장 큰 공약수를 찾으려면 오류가 발생하는 이유는 무엇입니까?정수 나누기 또는 제로 모듈로

+1

을 그것은 줘? 함수 내부에 코드를 들여 쓰지 않은 것처럼 보입니다.이 경우 함수에 코드가 없습니다. 함수가 비어 있고 SyntaxError가 발생합니다. –

+1

'test = 0' - 왜 오류가 나오지 않습니까? –

답변

0
if a%test == 0 and b%test == 0: 

이 줄 오류는 맞습니까?

test = 0 

작동하지 않기 때문에 % 0을 수행 할 수 없습니다. 당신은 test = atest = b을하고 싶지 않다. 또한 test = min(a, b) 할 수도 있습니다. 또한 유클리드 알고리즘을 사용하십시오.

당신은 범위가없는 test = 0if 때문에 필요하지만, 다시, 단지 if을 꺼내 test = min(a, b)하지 않습니다.

0

당신은 ZeroDivisionError 초래하는 첫 번째 반복에서 0으로 나누려고 : 정수 나누기 또는 모듈로 당신은 당신의 코드를 변경해야 제로

if a%test == 0 and b%test == 0: 

의 : 어떤 오류가하는

b = test #should be test = b 
a = test #should be test = a