В этом уроке Python я покажу вам, как написать программу для поиска совершенного числа на Python.
Программа Perfect Number
Во-первых, «Что такое совершенное число?» Совершенное число равно сумме своих делителей. Например, возьмем число 6. На какие числа можно его полностью разделить? Числа 1, 2 и 3 называются делителями.
Итак, по определению совершенное число равно сумме своих делителей; давайте просуммируем делитель 6, который равен 1 + 2 + 3, и он равен 6. Следовательно, 6 — совершенное число, потому что сумма делителей равна 6.
Сначала инициализируйте переменную значением, равным 28, чтобы проверить ее на идеальное число.
number = 28
Далее снова инициализируйте переменную с именем sum_divisors значением, равным 0. Эта переменная делителя будет хранить сумму делителей данного числа.
sum_divisors = 0
Теперь инициализируйте цикл for, который будет принимать число от 1 до n (это заданное число) и делить данное число, чтобы увидеть, какое число полностью делит данное число.
for i in range(1, number): if number % i == 0: sum_divisors = sum_divisors + i if sum_divisors == number: print('The given number is perfect number') else: print('The given number is not perfect number')
Посмотрите на результат: 28 – идеальное число. Давайте разберемся, как работает приведенный выше код.
Сначала переменная число инициализируется значением 28, и вы хотите проверить, является ли оно идеальным числом. Затем новая переменная sum_divisors инициализируется значением 0. Эта sum_divisors будет хранить сумму делителей числа.
Затем, используя эту строку «для i в диапазоне (1, число)», он запускает цикл, который выполняется от 1 до значения числа.
Здесь циклы выполняются от 1 до числа-1, поскольку он пытается найти все делители заданного числа, исключая само число.
Затем первый условный оператор с циклом «if number % i == 0» проверяет, является ли текущее значение «i» делителем заданного числа или полностью делит это число. Затем это «i» добавляется к «sum_divisors», используя строку «sum_divisors = sum_divisors + i».
Здесь sum_divisors+i добавляет текущие делители, которые представлены буквой «i» со значениями делителей в sum_divisors.
Наконец, следующее условие «if sum_divisors == число» сравнивает sum_divisors с заданным числом, чтобы проверить, равна ли сумма делителей заданному числу. Если это правда, это означает, что число идеальное.
Когда число идеальное, на терминал выводится сообщение «Данное число идеальное», в противном случае выводится сообщение «Данное число не является совершенным числом».
С использованием функции
В приведенном выше разделе вы научились создавать программу идеальных чисел на Python с помощью цикла. Здесь я покажу вам, как создать программу идеальных чисел, используя функцию.
Вы можете создать функцию, включив всю логику, которую вы выполнили в приведенном выше разделе, в функциональный блок.
def is_perfect(number): sum_divisors = 0 for i in range(1, number): if number % i == 0: sum_divisors = sum_divisors + i if sum_divisors == number: print('The given number is perfect number') else: print('The given number is not perfect number')
В приведенном выше коде создается функция с именем is_perfect. Теперь вызовите эту функцию со значением 496, как показано ниже.
is_perfect(496)
Посмотрите, там написано: «Данное число является совершенным числом». Итак, чтобы узнать, является ли число идеальным, вы просто передаете его функции is_perfect(), которая содержит логику, и вы уже знаете, как она работает.
С помощью рекурсии
Рекурсия — это концепция, в которой функция неоднократно вызывает сама себя. Вы увидите, как использовать рекурсию для проверки того, является ли данное число простым.
Выполните приведенный ниже код Python для получения идеального числа, используя рекурсию.
def sum_of_divisors(number, i=1): if i == number: return 0 if number % i == 0: return i + sum_of_divisors(number, i + 1) else: return sum_of_divisors(number, i + 1)
Теперь вызовите эту функцию со значением 28.
num = 28 if sum_of_divisors(num) == num: print(num, "is a perfect number.") else: print(num, "is not a perfect number.")
Посмотрите на результат. 28 — идеальное число, возвращаемое с помощью рекурсии. Давайте разберемся в каждой строке кода.
- Здесь определяется функция с именем «sum_of_divisors (number)». Для проверки идеальности требуется число «number» и «i» — текущий делитель со значением по умолчанию 1.
- Затем первая строка — if i == число внутри функции. Это означает, что он проверяет, равно ли «i» числу. Затем он останавливает рекурсию.
- После следующей строки кода «if number % i == 0: return i + sum_of_divisors (number, i + 1)» он проверяет, делится ли данное число «number» на «i», что означает, что после деления, он становится равным 0, затем включается в сумму и рекурсивно, в противном случае он не включается в сумму, просто рекурсивно используйте код «else: return sum_of_divisors (number, i + 1)».
- Следующая строка кода, num = 28, инициализирует переменную num значением 28. Это число, которое вы хотите знать, идеально ли оно.
- Следующая строка кода «if sum_of_divisors (num) == num» передает число в функцию sum_of_divisors (num) для вычисления суммы делителей, которая затем сравнивается с заданным числом «num», используя ==.
- Если сумма делителей, возвращаемая функцией, равна заданному числу «num», то «num» является совершенным числом. В противном случае num не является идеальным числом.