Как вычислить наибольшее число кратное 2?
a = range(0, 1000000)
if a % 2 == 0:
a = d
print(max(d))
Ответы (4 шт):
Автор решения: CrazyElf
→ Ссылка
Если прямо вот так в лоб, не анализируя, что за последовательность на входе, то вот так:
print(max(a for a in range(0,1000000) if a%2 == 0))
Функции max нужно передать последовательность, из которой она выберет максимальный элемент.
По хорошему то, конечно, нужно идти с конца, и вообще можно сделать гораздо проще в данном случае, просто отняв остаток от деления на 2 от верхней границы диапазона:
n = 1_000_000 - 1
print(n - n % 2)
Автор решения: Анастасия
→ Ссылка
По-моему, сработает, если создать цикл по убыванию и проверять каждое число на кратность двум
for i in range(1000000-1, 0, -1):
if i%2 == 0:
print(i)
break
Автор решения: insolor
→ Ссылка
a = range(0, N)
print(next(reversed(a))//2*2)
reversed от range не вычисляет все значения, а грубо говоря переставляет местами параметры range, поэтому даже для больших N считает мгновенно:
In [1]: N = 10**100
In [2]: a = range(0, N)
In [3]: %timeit next(iter(a))
134 ns ± 0.164 ns per loop (mean ± std. dev. of 7 runs, 10000000 loops each)
In [4]: %timeit next(reversed(a))
278 ns ± 0.226 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)
Автор решения: Jack_oS
→ Ссылка
n = int(input())
max_even = n-1 if n%2 else n
print(max_even)
вывод max_even:
>? 13
12
>? 42
42