в двумерном массиве N*N найти простые числа,и если в строках находятся более двух простых чисел то обнулить эти строки.

 в двумерном массиве N*N найти простые числа,и если в строках находятся более двух простых чисел то обнулить эти строки.
Гость
Ответ(ы) на вопрос:
Гость
вот жутко неэффективное решение, для нормального надо писать решето эратосфена, можно нагуглить, если нужна эффективность 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.
Не нашли ответ?
Ответить на вопрос
Похожие вопросы