(для паскаля) два натуральных числа называются дружественными, если каждое из них равно сумме всех делителей другого (само другое число в качестве делителя не рассматривается). найти все пары натуральных дружественных чисел, меньших 50 000.
1. Var a,b,pr:integer; Begin pr:=1; write('Вводите числа, когда закончите - введите 0. '); readln(a); while (a<>0) do begin if (a>0) and (a<10) then begin b:=b+1; pr:=pr*a; end; readln(a) end; Writeln('Чисел, больше 0 и меньше 10: ',b,' их произведение:',pr);end.
2. Var a,b,c,i,sum,f:integer; Begin Write('Введите 10 двузначных чисел: '); repeat readln(a); until(a>=10) and (a<100); for i:=1 to 10 do begin repeat readln(a); until(a>=10) (a<100) b:=a mod 10; c:=a div 10; sum:=b+c; if (sum mod 2 = 0) then f:=f+1; end; Writeln('Кол-во цифр, удовлетворяющих условию: ',f); end.
3. Var a,b,c:integer; Begin write('Вводите целые положительные числа.'); repeat readln(a); b:=b+a; c:=c+1; until (b>100); Writeln('Кол-во введёных чисел:',c,' их сумма:',b); end.
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.
// Внимание! Если программа не работает, обновите версию!
function snd(n:integer):integer;
begin
Result:=1;
for var i:=2 to n div 2 do
if n mod i=0 then Result+=i
end;
begin
for var i:=1 to 50000 do
for var j:=i+1 to 50000 do
if (snd(i)=j) and (snd(j)=i) then Print((i,j))
end.
Результат
(220,284) (1184,1210) ... запускайте и ждите, если больше заняться нечем.