Вопрос Программирование на питон срочно!!

Регистрация
5 Сен 2013
Сообщения
66
Репутация
0
Спасибо
0
Монет
0
Даны числа ? и ?. Выведите то из чисел ?, ?, ?∗?, у которого больше всего делителей. Если таких чисел несколько, то выведите меньшее из них.

Входные данные

В первой строке дано число ?, во второй строке дано число ?

Выходные данные

Одно число - то число из множества ?, ?, ?∗?, у которого больше всего делителей.
 
А куда торопится?
 
Питоны только в Африке
 
def count_divisors(n):
count = 0
for i in range(1, int(n**(0.5))+1):
if n % i == 0:
count += 2
if i == n // i:
count -= 1
return count

a = int(input())
b = int(input())

a_divisors = count_divisors(a)
b_divisors = count_divisors(b)
ab_divisors = count_divisors(a*b)

if a_divisors >= b_divisors and a_divisors >= ab_divisors:
print(a)
elif b_divisors >= a_divisors and b_divisors >= ab_divisors:
print(b)
else:
print(a*b)
 
Ну, а сама-то как думаешь? Все делители a и все делители b являются делителями их произведения. Ясное дело, у a * b будет больше всего делителей.
Исключение - когда a или b равно единице, и тогда a * b будет равно b или a, соответственно, и то же самое касается количества делителей. Но и в этом случае можно просто вывести произведение как наименьшее из двух равных чисел. a, b = map(int, map(input, ('','')))
print(a * b) или вообще вот так: print(int.__mul__(*map(int, map(input, ('','')))))
 
Назад
Сверху