begin i := 3; k := 0; repeat s := 1; for d := 2 TO Trunc(sqrt(i)) do begin n := (i div d); if n * d = i then s := s + d + (i div d); end; if int(sqrt(i)) = sqrt(i) then s := s - Trunc(sqrt(i)); if s = i then k := k + 1; i := i + 1 until (k = 3); Writeln('Третье совершенное число равно ',s) end.
Тестовое решение: Третье совершенное число равно 496
const k=35; { k-е по порядку простое число }
var i,j,n,m:integer;
begin n:=1; i:=1; repeat j:=2; m:=round(sqrt(i)); while (i mod j <>0) and (j<=m) do j:=j+1; if j>m then n:=n+1; i:=i+1 until (n=k); Writeln(i-1) end.
Тестовое решение: 137
var n, d1, d2, d3: integer;
begin Write('Введите трехзначное число ->'); Readln(n); d1 := (n div 100); d2 := ((n mod 100) div 10); d3 := (n mod 10); if (d1 * d2 * d3 in [100..999]) then Writeln('Произведение цифр трехзначное') else Writeln('Произведение цифр не трехзначное') end.
Тестовое решение: Введите трехзначное число ->518 Произведение цифр не трехзначное
*** В блок-схемах использованы обозначения: sqrt(x) - квадратный корень от х; \ - операция целочисленного деления % - операция остатка от целочисленного деления
Var m : array[0..6] of Integer; i,k,N : Integer; Begin For i:=0 to 6 do m[i]:=0; Readln(N); k:=6; While N>0 do Begin If N>=Power(2,k) then Begin N:=N-Trunc(Power(2,k)); Inc(m[k]); end else Dec(k); end; For i:=0 to 6 do Writeln(Power(2,i),' ',m[i],' шт.'); end.
Еще вариант: Const NN = 7; money : array[1..7] of Integer = (1,2,4,8,16,32,64); Var m : array[1..NN] of Integer; i,k,N : Integer; Begin For i:=1 to NN do m[i]:=0; Readln(N); k:=NN; While N>0 do Begin If N>=money[k] then Begin N:=N-money[k]; Inc(m[k]); end else Dec(k); end; For i:=1 to NN do Writeln(money[i],' ',m[i],' шт.'); end.
i, n, s: longint;
d, k: integer;
begin
i := 3; k := 0;
repeat
s := 1;
for d := 2 TO Trunc(sqrt(i)) do
begin
n := (i div d);
if n * d = i then s := s + d + (i div d);
end;
if int(sqrt(i)) = sqrt(i) then s := s - Trunc(sqrt(i));
if s = i then k := k + 1;
i := i + 1
until (k = 3);
Writeln('Третье совершенное число равно ',s)
end.
Тестовое решение:
Третье совершенное число равно 496
const
k=35; { k-е по порядку простое число }
var
i,j,n,m:integer;
begin
n:=1; i:=1;
repeat
j:=2;
m:=round(sqrt(i));
while (i mod j <>0) and (j<=m) do j:=j+1;
if j>m then n:=n+1;
i:=i+1
until (n=k);
Writeln(i-1)
end.
Тестовое решение:
137
var
n, d1, d2, d3: integer;
begin
Write('Введите трехзначное число ->');
Readln(n);
d1 := (n div 100);
d2 := ((n mod 100) div 10);
d3 := (n mod 10);
if (d1 * d2 * d3 in [100..999]) then
Writeln('Произведение цифр трехзначное')
else Writeln('Произведение цифр не трехзначное')
end.
Тестовое решение:
Введите трехзначное число ->518
Произведение цифр не трехзначное
*** В блок-схемах использованы обозначения:
sqrt(x) - квадратный корень от х;
\ - операция целочисленного деления
% - операция остатка от целочисленного деления
i,k,N : Integer;
Begin
For i:=0 to 6 do m[i]:=0;
Readln(N);
k:=6;
While N>0 do
Begin
If N>=Power(2,k) then
Begin
N:=N-Trunc(Power(2,k));
Inc(m[k]);
end else Dec(k);
end;
For i:=0 to 6 do Writeln(Power(2,i),' ',m[i],' шт.');
end.
Еще вариант:
Const
NN = 7;
money : array[1..7] of Integer = (1,2,4,8,16,32,64);
Var m : array[1..NN] of Integer;
i,k,N : Integer;
Begin
For i:=1 to NN do m[i]:=0;
Readln(N);
k:=NN;
While N>0 do
Begin
If N>=money[k] then
Begin
N:=N-money[k];
Inc(m[k]);
end else Dec(k);
end;
For i:=1 to NN do Writeln(money[i],' ',m[i],' шт.');
end.