программа печатает по меньшей мере, один фактор целого числа у, или если он не имеет факторов (кроме себя и 1), отпечатки, что у первична ,
Он использует переменную x, чтобы попробовать все возможные факторы, превышающие один. Он начинается на полу y, разделенном на 2, потому что число, большее половины y, может быть фактором. Использование нормального деления, а не разделения пола может дать вам дробное значение, если y нечетно. (Еще лучшее решение - начать с квадратного корня y - если y не является простым, один из его факторов будет меньше или равен его квадратному корню.)
Внутри цикла он проверяет y% x , что является остатком после деления y на x. Если остаток равен нулю, это означает, что x является фактором y, и он печатает его.
Предложение else выполняется в конце цикла, если только не найден фактор, и в этом случае «break» пропускается из цикла и предложения else. Таким образом, либо найден фактор, либо он является простым.
Вот усовершенствованный код с отступом фиксированным:
import math
def check_primality(y):
x = int(math.sqrt(y))
while x > 1:
if y % x == 0:
print y, 'has factor', x
break
x -= 1
else:
print y, 'is prime'
Замечание для редакторов, предложение else должно быть встроено в оператор while, а не оператор if. – Wogan
Исправлено это для вас. – Ikke
этот код не Python, это C :-) –