Задать вопрос
8 мая, 06:38

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

+2
Ответы (1)
  1. 8 мая, 07:13
    0
    Вот жутко неэффективное решение, для нормального надо писать решето эратосфена, можно нагуглить, если нужна эффективность

    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.
Знаете ответ?
Сомневаетесь в ответе?
Найдите правильный ответ на вопрос ✅ «в двумерном массиве N*N найти простые числа, и если в строках находятся более двух простых чисел то обнулить эти строки. ...» по предмету 📘 Информатика, а если вы сомневаетесь в правильности ответов или ответ отсутствует, то попробуйте воспользоваться умным поиском на сайте и найти ответы на похожие вопросы.
Смотреть другие ответы