Function IsPrime(n:integer):Boolean; var p:integer; found:Boolean; begin found:= (n Mod 2 = 0); p:=3; while (not found) and (sqr(p)<=n) do begin found:=(n Mod p = 0); p:=p+2 end; IsPrime:=(not found) or (p = 2) end;
const n = 12; var a:array[1..n,1..n] of integer; i,j,s,k:integer; begin Randomize; Writeln('Исходный массив'); for i:=1 to n do begin for j:=1 to n do begin a[i,j]:=Random(99)+1; { интервал [1..99] } Write(a[i,j]:3) end; Writeln end; { решаем } s:=0; for i:=1 to n do begin k:=a[i,i]; if IsPrime(k) then a[i,i]:=s; s:=s+a[i,i] end; { выводим } Writeln('Результирующий массив'); for i:=1 to n do begin for j:=1 to n do Write(a[i,j]:5); Writeln end end.
№2
Здесь мы разобьём каждое число на пары двоичных чисел, например :
3 = 11
2 = 10
1 = 01
0 = 00
№3
Далее мы воспользуемся результатом №1
№4
Воспользуемся результатом №2
И заменим триады двоичных чисел (3 двоичных числа) на 1 восьмеричное:
7 = 111
6 = 110
5 = 101
4 = 100
3 = 011
2 = 010
1 = 001
0 = 000
№5
5+6=8+3,
где 8 в восьмеричной системе это 10 и оно перешло в следующий разряд (2+1+1=4) а число 3 осталось в предыдущем разряде
,04 так и осталось т.к. плюсовалось с двумя нулями
Вроде всё подробно расписал ;)
Будут вопросы - пиши !!