#list #for-loop #set #greatest-common-divisor
#python #Список #для цикла #установить #наибольший общий делитель
Вопрос:
def get_divs(z):
return [i for i in range(1, z) if z % i == 0]
def gcd(x, y):
x_div=get_divs(x)
y_div=get_divs(y)
cd=set(x_div).intersection(y_div)
gcd=cd[-1]
print("The GCD of",x,"and",y,"is",gcd)
return 1
Я пытаюсь заставить эту программу вычислять наибольший общий делитель (GCD) двух введенных пользователем положительных целых чисел (x и y). Функция set не возвращает список, который можно проиндексировать. Любые предложения относительно того, как я могу найти GCD?
Комментарии:
1. Вы могли бы попробовать преобразовать набор в список, используя
list(cd)
. В качестве альтернативы, если вам нужен самый большой элементcd
, используйтеmax(cd)
.
Ответ №1:
Вот как должен выглядеть алгоритм.
findGCD(int firstNum, int secondNum){
int smaller; int bigger;int remainder;
if(firstNum < secondNum) {
smaller = firstNum;
bigger = secondNum;
}
else {
smaller = secondNum;
bigger = firstNum;
}
while(true) {
remainder = bigger % smaller;
if(remainder == 0) {
break;
}
else {
bigger = smaller;
smaller = remainder;
}
}
return smaller;
}