def prime(n): for i in range(2, (n // 2) + 1): if n % i == 0: return False else: return True
def prime_closest_to(n): for i in count(n): if prime(i): x = i dx = x - n break for j in count(n - 1, 1): if prime(j): y = j dy = n - y break ret = x if dx < dy else y return ret
n = int(input('n = ')) print('Ближайшее простое число =', prime_closest_to(n))
div - это целочисленное деление. Это значит что при деление на числа, остаток отбрасывается.
Пример (10 div 3):
1. Если мы просто разделим 10 на 3, то мы получим 3.3333. При деление целочисленным делением (div-ом), дробная часть отбрасывается. И ответ будет просто 3.
Цикл repeat-until означает что цикл будет совершаться, пока условие в until не будет выполнено.
Мы попадаем в цикл. Сначала выполняется s + 5, что будет равно 5, а после выполняется div с i: 5 div 3. Мы получаем ответ 1 и это же значение заносится в переменную s. От переменной i отнимается 1 и оно становится 2.
После итерации цикла, происходит проверка условия until. Так как 2 не меньше 1, цикл вновь запускается
Вторая итерация. s уже равна 1, значит: 1 + 5 div 2 -> 6 div 2 -> 3. s = 3. От i опят отнимается единица.
Опять завершаем цикл и проверяем условие 1 не меньше 1 (они равны), значит будет еще одна итерация.
Третья итерация. s = 3, значит 3 + 5 div 1 -> 8 div 1 -> 8. В s заносится 8. От i отнимаем 1 и i = 0
Так как 0 < 1, условие выполняется и мы выходим из цикла. Программа завершена. В s находится цифра 8, в i лежит 0
from itertools import count
def prime(n):
for i in range(2, (n // 2) + 1):
if n % i == 0:
return False
else:
return True
def prime_closest_to(n):
for i in count(n):
if prime(i):
x = i
dx = x - n
break
for j in count(n - 1, 1):
if prime(j):
y = j
dy = n - y
break
ret = x if dx < dy else y
return ret
n = int(input('n = '))
print('Ближайшее простое число =', prime_closest_to(n))
div - это целочисленное деление. Это значит что при деление на числа, остаток отбрасывается.
Пример (10 div 3):
1. Если мы просто разделим 10 на 3, то мы получим 3.3333. При деление целочисленным делением (div-ом), дробная часть отбрасывается. И ответ будет просто 3.
Вот еще примеры:
2 div 2 = 1 | (2 / 2 = 0)2 div 3 = 0 | (2 / 3 = 0.66)5 div 3 = 1 | (5 / 3 = 2)13 div 6 = 2 | (13 / 6 = 2.16)РешениеИзначально s = 0, а i = 3
Цикл repeat-until означает что цикл будет совершаться, пока условие в until не будет выполнено.
Мы попадаем в цикл. Сначала выполняется s + 5, что будет равно 5, а после выполняется div с i: 5 div 3. Мы получаем ответ 1 и это же значение заносится в переменную s. От переменной i отнимается 1 и оно становится 2.
После итерации цикла, происходит проверка условия until. Так как 2 не меньше 1, цикл вновь запускается
Вторая итерация. s уже равна 1, значит: 1 + 5 div 2 -> 6 div 2 -> 3. s = 3. От i опят отнимается единица.
Опять завершаем цикл и проверяем условие 1 не меньше 1 (они равны), значит будет еще одна итерация.
Третья итерация. s = 3, значит 3 + 5 div 1 -> 8 div 1 -> 8. В s заносится 8. От i отнимаем 1 и i = 0
Так как 0 < 1, условие выполняется и мы выходим из цикла. Программа завершена. В s находится цифра 8, в i лежит 0