Type str = array [1..100] of char; var maxs, tmps : str; count, max, tmp, ctmp : integer; procedure reads (var s : str; var len, val : integer); var b : boolean; c : char; i : integer; begin i : = 0; b : = false; repeat read (c); if not b or (c < > ' ') then begin if c = ' ' then b : = true; inc (i); s[i] : = c; c : = '1'; end; until b and (c = ' '); len : = i; readln (val); end; begin assign (input, 'input.txt'); reset (input); reads (maxs, count, max); while not eof do begin reads (tmps, ctmp, tmp); if tmp > max then begin max : = tmp; count : = ctmp; maxs : = tmps; end; end; for tmp : = 1 to count do write (maxs[tmp]); end.
KonovalovKonstantinovna1306
17.06.2020
Вот жутко неэффективное решение, для нормального надо писать решето эратосфена, можно нагуглить, если нужна эффективность function isprime (a : integer) : boolean; var i, lim : integer; begin if n < 4 then begin if n = 1 then isprime : = false else isprime : = true; exit; end; lim : = trunc (sqrt (a)); for i : = 2 to lim do if a mod i = 0 then begin isprime : = false; exit; end; isprime : = true; end; var a : array of array of integer; b : array of integer; i, j, n : integer; begin read (n); setlength (a, n, n); setlength (b, n); for i : = 0 to n - 1 do for j : = 0 to n - 1 do read (a[i, j]); for i : = 0 to n - 1 do begin b[i] : = 0; for j : = 0 to n - 1 do if isprime(a[i, j]) then inc (b[i]); end; for i : = 0 to n - 1 do begin if b[i] < = 2 then for j : = 0 to n - 1 do write (a[i, j], ' ') else for j : = 0 to n - 1 do write ('0 '); writeln; end; end.