if k=1 then write('Совершенные числа из диапазона от 1 до ',n,': ');
write(i,' ')
end;
i:=i+1
end;
if k=0 then write('Совершенных чисел в диапазоне от 1 до ',n,' нет');
end.
Хабарьева Андрей1056
29.03.2020
1. Две рядом стоящие цифры могут дать максимум 18 (сочетание 99), поэтому все четырехзначные варианты, содержащие пары больше 18 отбрасываем (1916,1619). 2. Результат 1616 может получиться только как комбинация 8+8, т.е исходным было число 888. Найдено первое число. 3. Результат 169 может быть образован из числа 881, это второе число. 4. Результат 163 никак не может быть получен, потому что 16 - это 9+7, 8+8 или 7+9, но даже 7, сложенное с 0 даст уже 7, а не 3. 5. Результат 316 по той же причине не может быть получен - число 3 это сумма 1+2, но даже 2+9 не даст 16. 6. Результат 916 может быть получен из 188, но только как комбинация 9,16, что нарушает порядок невозрастания. Бракуем. 7. Результат 116 может быть получен из 651, это третье число. ответ: 3 числа.
Mikuspavel2
29.03.2020
1)var n,k: integer; begin write('число: '); readln(n); k: =0; repeat k: =k*10+n mod 10; n: =n div 10; until n=0; writeln('новое число: ',k); end. 2) var n,k,m: integer; begin write('двоичное число: '); readln(n); k: =1; m: =0; repeat m: =m+k*(n mod 10); n: =n div 10; k: =k*2; until n=0; writeln('десятичное число: ',m); end.
Ответить на вопрос
Поделитесь своими знаниями, ответьте на вопрос:
Напишите программу получения всех совершенных чисел из диапазона от 1 до написать через цикл while.
var n,i,j,s,k:integer;
begin
write('Введите число: ');
readln(n);
i:=1;
while i <= n do
begin
j:=1;
s:=0;
while j<i
do
if i mod j = 0 then
begin
s:=s+j;
j:=j+1;
end
else
j:=j+1;
if s=i then
begin
k:=k+1;
if k=1 then write('Совершенные числа из диапазона от 1 до ',n,': ');
write(i,' ')
end;
i:=i+1
end;
if k=0 then write('Совершенных чисел в диапазоне от 1 до ',n,' нет');
end.