В
Все
Х
Химия
В
Видео-ответы
А
Алгебра
Г
Геометрия
О
ОБЖ
Д
Другие предметы
У
Українська література
Р
Русский язык
Б
Беларуская мова
У
Українська мова
Э
Экономика
Ф
Физика
М
Математика
Ф
Французский язык
Г
География
И
Информатика
М
МХК
О
Окружающий мир
П
Психология
Н
Немецкий язык
О
Обществознание
П
Право
И
История
М
Музыка
Л
Литература
Қ
Қазақ тiлi
Б
Биология
А
Английский язык
нурислам15
нурислам15
08.02.2023 17:28 •  Информатика

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

Ответ:
viktoriavasili
viktoriavasili
23.06.2020 08:31
Вот жутко неэффективное решение, для нормального надо писать решето эратосфена, можно нагуглить, если нужна эффективность

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.
0,0(0 оценок)
Популярные вопросы: Информатика
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?