Найти все совершенные числа до 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("%d\n", 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 i\2
if i%j = 0 then s = s + j
next j
if s = i then print i
next i
6
28
496
8128
Подписаться
1 Комментарий
Новые
СтарыеПопулярные
Межтекстовые Отзывы
Посмотреть все комментарии
sanya
1 год назад
10/10
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
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 i\2 if i%j = 0 then s = s + j next j if s = i then print i next i
10/10