Найти совершенные числа
Просмотров 14.7к. Обновлено 15 октября 2021
Найти все совершенные числа до 10000. Совершенное число — это такое число, которое равно сумме всех своих делителей, кроме себя самого. Например, число 6 является совершенным, т.к. кроме себя самого делится на числа 1, 2 и 3, которые в сумме дают 6.
В цикле, перебирая натуральные числа до 10000,
- присвоить переменной, в которой будет накапливаться сумма делителей, 0.
- В цикле от 1 до половины текущего натурального числа
- пытаться разделить исследуемое число нацело на счетчик внутреннего цикла.
- Если делитель делит число нацело, то добавить его к переменной суммы делителей.
- Если сумма делителей равна исследуемому натуральному числу, то это число совершенно и следует вывести его на экран.
Pascal
совершенное число паскаль
var
i,j,s: word;
begin
for i := 1 to 10000 do begin
s := 0;
for j:=1 to i div 2 do
if i mod j = 0 then
s := s+j;
if s = i then
write(i,' ');
end;
writeln;
end.
6 28 496 8128
Язык Си
#include < stdio.h>
main() {
int i,j,s,l;
for (i=2; i<10000; i++) {
s = 0;
for (j=1; j < i; j++)
if (i%j == 0)
s += j;
if (s == i)
printf("%dn", i);
}
}
Если i поделить на 2, то программа работает неправильно. В Питоне такая же проблема.
Python
совершенные числа python
for i in range(2, 10000):
s = 0
for j in range(1, int(i // 2) + 1):
if i % j == 0:
s += j
if s == i:
print(i)
6
28
496
8128
КуМир
алг совершенные числа
нач
цел i,j,s
нц для i от 1 до 1000
s := 0
нц для j от 1 до div(i,2)
если mod(i,j) = 0 то
s := s + j
все
кц
если s = i то
вывод i, " "
все
кц
кон
Невероятно долгий поиск даже до 1000.
Basic-256
for i=2 to 10000
s = 0
for j=1 to i2
if i%j = 0 then s = s + j
next j
if s = i then print i
next i
6
28
496
8128
Играть с числами — это то, чем мы занимаемся с детства. Основные арифметические операции, выполняемые с числами, дают ценные результаты. В игровом обучающем путешествии мы должны уделять больше внимания развитию логики в математике, поскольку она становится основой программирования.
В этой статье мы обсудим, что такое идеальное число, какие нужно предпринять шаги, чтобы определить, идеально ли число или нет, и, наконец, мы увидим, как его программу можно написать на Python.
Итак, приступим …
Во-первых, давайте разберемся, что такое идеальное число в Python?
Совершенное число — это число, в котором сумма делителей числа равна числу.
Убедитесь, что мы должны исключить число при вычислении суммы делителей.
Теперь посмотрим, какие шаги необходимо предпринять для определения идеального числа.
- Прежде всего, мы попросим пользователя ввести целое число, которое будет сохранено в переменной.
- Теперь мы объявим переменную под названием «сумма», где мы будем хранить сумму делителей данного числа.
- Следующая задача — использовать цикл for, в котором мы разделим наше число на число, инициализированное для переменной i, затем мы увеличим значение I и проверим, какие числа дают нам остаток как ноль. Эти числа и будут нашими делителями.
- Теперь мы возьмем каждый из делителей этого числа и сложим его с переменной «сумма».
- Наконец, мы будем использовать ключевое слово оператора решения ‘if’, чтобы сравнить число, указанное пользователем, со значением суммы.
- Если значения равны, мы отобразим результат как «Это идеальное число», иначе мы отобразим «Это не идеальное число».
Пришло время взглянуть на программу Python.
Пример:
num=int(input("Enter the number: ")) sum_v=0 for i in range(1,num): if(num%i==0): sum_v=sum_v+i if(sum_v==num): print("The entered number is a perfect number") else: print("The entered number is not a perfect number")
Выход:
Enter the number: 6 The entered number is a perfect number Enter the number: 25 The entered number is not a perfect number
Объяснение:
- У нас есть переменная num, и мы попросили пользователя указать ее значение.
- Как обсуждалось ранее, мы объявили переменную sum_v равной нулю.
- Теперь мы использовали цикл for, диапазон которого составляет от 1 до числа, предоставленного пользователем.
- Следующий шаг — проверить, дает ли число при делении на все числа, указанные в диапазоне, остаток как ноль.
- Эти значения будут добавлены и сохранены в переменной sum_v.
- Наконец, мы использовали «if», чтобы сравнить сумму делителей с числом и отобразить требуемый результат.
- В этой программе пользователь указал значения 6 и 25, и отображается желаемый результат.
Давайте посмотрим на другую программу, в которой мы реализуем то же самое с помощью функции.
Пример 2:
def num_perfect(num): sum_n = 0 for i in range(1, num): if num % i == 0: sum_n=sum_n+i return sum_n == num print(num_perfect(25))
Выход:
False
Объяснение:
В этой программе мы использовали шаги, аналогичные тем, которые мы обсуждали в предыдущем примере, с той лишь разницей, что здесь мы определили функцию и вызвали ее, указав значение.
Поскольку оператор return присутствует в конце определения функции, он дает значение как True или False.
Итак, в этом руководстве мы узнали об идеальных числах, процессе, которому мы должны следовать, чтобы определить, является ли данное число идеальным или нет, и в конце обсудили его реализацию на Python.
1135-11cookie-checkИдеальное число в Python — как найти и проверить?
Напишите функцию, которая будет проверять, является ли целое число совершенным числом.
Совершенное число — натуральное число, равное сумме всех своих собственных делителей (то есть всех положительных делителей, отличных от самого числа).
Например, 6 — совершенное число, поскольку 1 + 2 + 3 = 6, а 1, 2 и 3 — делители числа 6.
Аналогично, совершенным числом является 28, поскольку 1 + 2 + 4 + 7 + 14 = 28.
Примеры
check_perfect(6) ➞ True check_perfect(28) ➞ True check_perfect(496) ➞ True check_perfect(12) ➞ False check_perfect(97) ➞ False
Варианты решений
def check_perfect(num): return sum([i for i in range(1, num) if num%i==0]) == num
def check_perfect(num): factors = [] for i in range(1,num): if num % i == 0: factors.append(i) return sum(factors) == num
script1adsense2code
script1adsense3code
Функции Python: Упражнение 11 с решением
Напишите функцию Python, чтобы проверить, является ли число совершенным или нет.
Согласно Википедии: в теории чисел совершенное число – это положительное целое число, равное сумме его собственных положительных делителей, то есть сумме его положительных делителей, исключая само число (также известное как его аликвотная сумма). Эквивалентно, идеальное число – это число, которое составляет половину суммы всех его положительных делителей (включая себя).
Пример : первое совершенное число равно 6, потому что 1, 2 и 3 являются его собственными положительными делителями, а 1 + 2 + 3 = 6. Эквивалентно, число 6 равно половине суммы всех его положительных делителей: (1 + 2 + 3 + 6) / 2 = 6. Следующее совершенное число – 28 = 1 + 2 + 4 + 7 + 14. За ним следуют совершенные числа 496 и 8128.
Пример решения : –
Код Python:
def perfect_number(n):
sum = 0
for x in range(1, n):
if n % x == 0:
sum += x
return sum == n
print(perfect_number(6))
Пример вывода:
Правда
Наглядная презентация:
Блок – схема:
Визуализируйте выполнение кода Python:
Следующий инструмент визуализирует, что компьютер делает шаг за шагом при выполнении указанной программы:
Редактор кода Python:
Есть другой способ решить это решение? Внесите свой код (и комментарии) через Disqus.
Предыдущий: Напишите программу на Python для печати четных чисел из заданного списка.
Далее: Напишите функцию Python, которая проверяет, является ли переданная строка палиндромом или нет.
Каков уровень сложности этого упражнения?
Новый контент: Composer: менеджер зависимостей для PHP , R программирования
script1adsense5code
disqus2code
script1adsense6code
script1adsense7code
script1adsense8code
Fanago 0 / 0 / 0 Регистрация: 19.12.2016 Сообщений: 14 |
||||
1 |
||||
Совершенные числа24.01.2017, 18:36. Показов 30403. Ответов 10 Метки нет (Все метки)
Добрый всем вечер, форумчане. Мой вариант:
Какие есть предложения? Я ввожу диапазон но ничего не происходит, ошибки не выдает.
0 |
Programming Эксперт 94731 / 64177 / 26122 Регистрация: 12.04.2006 Сообщений: 116,782 |
24.01.2017, 18:36 |
10 |
Ennjin 103 / 81 / 54 Регистрация: 25.11.2016 Сообщений: 278 |
||||
24.01.2017, 19:33 |
2 |
|||
Fanago,
Добавлено через 15 минут Не по теме: Если честно, то здесь немного не точный код
0 |
oldnewyear 438 / 430 / 159 Регистрация: 21.05.2016 Сообщений: 1,338 |
||||
25.01.2017, 02:49 |
3 |
|||
Fanago, у вас в 8й строчке ошибка: if i/j == 0. Должно быть if i % j == 0
0 |
0 / 0 / 0 Регистрация: 13.01.2016 Сообщений: 40 |
|
21.02.2022, 13:55 |
4 |
x, y = [int(i) for i in (input(‘Укажите границы через пробел: ‘).split())]
СПАСИБО!
0 |
Lelush_Lamberg 0 / 0 / 0 Регистрация: 10.10.2022 Сообщений: 2 |
||||
10.10.2022, 13:19 |
5 |
|||
0 |
Модератор 35427 / 19452 / 4071 Регистрация: 12.02.2012 Сообщений: 32,486 Записей в блоге: 13 |
|
10.10.2022, 17:33 |
6 |
Lelush_Lamberg, пользуйся тэгами языка! Добавлено через 4 минуты
Единственный вариант который работает – не работает. Задал диапазон 1-100. Получил ответ 1, 28. Единица не при чем. Шесть пропущено.
0 |
Sapov 24 / 18 / 7 Регистрация: 30.09.2022 Сообщений: 54 |
||||
11.10.2022, 23:53 |
7 |
|||
0 |
Catstail Модератор 35427 / 19452 / 4071 Регистрация: 12.02.2012 Сообщений: 32,486 Записей в блоге: 13 |
||||
12.10.2022, 07:21 |
8 |
|||
Sapov, и зачем использовать список? Сумму делителей легко накопить и без списка…
Вывод: 6
1 |
NaFo_61 0 / 0 / 0 Регистрация: 13.04.2021 Сообщений: 4 |
||||
12.10.2022, 22:39 |
9 |
|||
Полностью рабочий код по поиску совершенных чисел от 1 до 10000, ну судите строго, я новичок
0 |
24 / 18 / 7 Регистрация: 30.09.2022 Сообщений: 54 |
|
13.10.2022, 00:35 |
10 |
Да, незачем действительно. Спасибо.
0 |
Luntik3000 0 / 0 / 0 Регистрация: 09.12.2022 Сообщений: 1 |
||||
09.12.2022, 21:47 |
11 |
|||
Во какой у меня способ тут используется алгоритм для очень быстрого нахождения делителя
0 |
IT_Exp Эксперт 87844 / 49110 / 22898 Регистрация: 17.06.2006 Сообщений: 92,604 |
09.12.2022, 21:47 |
Помогаю со студенческими работами здесь Процедуры и функции: Получить совершенные числа, меньше заданного числа n Для заданного натурального числа N вывести в столбик все совершенные числа меньшие N c++ Напечатать все совершенные числа, меньшие заданного числа N Напечатать все совершенные числа меньшие заданного числа N Искать еще темы с ответами Или воспользуйтесь поиском по форуму: 11 |