Если 2^N+1 без остатка делится на 2*N+1, то число N считается числом Керзона.
Реализуйте функцию, которая будет принимать целое число num
и возвращать
True
, если num
— число Керзона, и False
— если нет.
Примеры:
is_curzon(5) ➞ True 2 ** 5 + 1 = 33 2 * 5 + 1 = 11 33 кратно 11 is_curzon(10) ➞ False 2 ** 10 + 1 = 1025 2 * 10 + 1 = 21 1025 не кратно 21 is_curzon(14) ➞ True 2 ** 14 + 1 = 16385 2 * 14 + 1 = 29 16385 кратно 29
Решение:
def is_curzon(n): return not (2**n + 1) % (2*n + 1)
def is_curzon(num): return (2**num + 1) % (2*num + 1) == 0