- Теория:
- Алгоритмы:
- Числа:
|
ГЛАВА II
ЗАДАЧИ С РЕШЕНИЯМИ
Совершенные числа
|
1. Найти произведение совершенных чисел из 10 случайных, взятых в интервале[1, 10].
2. Поиск совершенных чисел в заданном с клавиатуры интервале.
3. Из 10 случайных чисел в интервале [1, 10] найти количество совершенных.
Пояснение: фактически надо найти количество шестерок.
Ответ может быть таким: 6 6 6 kch=3
4. Дано натуральное число N. Определить, является ли оно совершенным.
5. Вычислить ch/8+4, где ch - четвертое совершенное число.
|
1. Найти произведение совершенных чисел из 10 случайных, взятых в интервале[1, 10].
Ответ может быть таким:
8 9 9 1 5 4 10 9 1 9
совершенных чисел нет
или
8 1 3 1 9 6 8 6 8 2
произведение совершенных чисел=36
program sov_01;
uses crt;
var m: integer;
p,ch,sum,i: integer;
{m - количество чисел;
i - делители;
p - произведение чисел;
ch - число;
sum - сумма делителей
}
begin clrscr;
randomize;
p:=1;
m:=1;
while m <= 10
do begin
ch:= random(10)+1; write(ch:5); {берем случайное число в заданном интервале и выводим его на экран}
sum :=0;
For i:=1 to ch-1 do if ch mod i =0 then sum:=sum +i;
if ch = sum then p:=p*ch;
inc(m);
end;
writeln;
if p > 1 then writeln('произведение совершенных чисел=',p)
else writeln('совершенных чисел нет')
end.
|
2. Поиск совершенных чисел в заданном с клавиатуры интервале.
program sov_02;
uses crt;
var num, sum, i, x1, x2: integer;
begin
clrscr;
readln (x1, x2);
{границы числового интервала}
for num:=x1 to x2 do
begin
sum:=1;
for i:=2 to (num-1) do
if num mod i=0 then sum:=sum+i;
if (num=sum) and (num< >1) then writeln (num);
end;
end.
|
3. Из 10 случайных чисел в интервале [1, 10] найти количество совершенных.
Пояснение: фактически надо найти количество шестерок.
Ответ может быть таким: 6 6 6 kch=3
program sov_03;
uses crt;
var n, ch, kch, del, i, sum: integer;
begin clrscr;
randomize;
for n:=1 to 10 do
begin
ch:=random (10-1+1)+1;
sum:=0;
for i:=1 to ch-1 do
if ch mod i=0 then sum :=sum+i;
If ch=sum then begin write(ch:5); inc(kch) end;
end;
writeln ('kch=':6, kch);
end.
|
4. Дано натуральное число N. Определить, является ли оно совершенным.
program sov_04;
Var n,i,sum:word;
Begin
Write('Введите натуральное число');
Readln(n);
Sum:=0;{немного другой алгоритм поиска совершенных чисел}
for i:=1 to n div 2 do
if n mod I=0 then sum:=sum+i;
If sum=n then writeln('число ',n,' совершенное')
Else writeln(('число ',n,' не совершенное' );
End.
|
5. Вычислить ch/8+4, где ch - четвертое совершенное число.
Ответ:
k=4
ch=8128
ch/8+4=1020
program sov_05;
uses crt;
var ch, koldel, del, Sd, k: integer;
{ch - число;
koldel - количество делителей;
del - делители;
Sd - сумма делителей;
k - количество чисел;}
begin clrscr;
ch:=1;
k:=0;
while k<4 do
{ищем четвертое совершенное число}
begin inc(ch);
Sd:=0 ;
for del:=1 to ch-1 do
if ch mod del=0 then Sd:=Sd + del;
If ch=Sd then inc(k);
end;
writeln('k=',k); writeln('ch=',ch);
writeln('ch/8+4=',ch/8+4:2:0);
end.
|
|
|
|
|
|
|
|
|
|
|
|
|
|