segunda-feira, 9 de dezembro de 2019

Um código simples para verificar a primalidade de um número inteiro


Os números primos estão conseguindo manter a atenção dos matemáticos a séculos (para saber mais sobre números primos ver aqui). Hoje, eles encontram uma aplicação prática na segurança da informação no uso de sistemas de criptografia. Para testar a primalidade de um número a técnica mais antiga é conhecido por crivo de Eratóstenes (ver uma biografia dele aqui). Implementamos uma versão desse crivo no código abaixo.

Código Scilab:

clc; clear;  //// limpando a tela e a memória
x = 33;  //// inicializando com um valor
while x>0
x = input('Entre com um número inteiro (zero para encerrar): ');
n = round(sqrt(x) + 0.5);  // procurar até "n"
primo = %t;
rest = pmodulo(x,2);  ////  se for divísil por 2 não é primo
if rest > 0.1 then
    dv = 3;
    while (primo)&(dv < n)
        rest2 = pmodulo(x,dv);
        if rest2 < 1 then
            primo = %f;
            dd = x/dv;
            mprintf('Número %d é composto e seu primeiro divisor é %d; %d x %d = %d \n',x,dv,dv,dd,x);
        end
        dv = dv + 2;
    end
    else primo = %f;
end

if primo then
    mprintf('O número %d é primo \n',x);
end
mprintf(' \n');
end

Exemplo de execução:

Entre com um número inteiro (zero para encerrar): 4441
O número 4441 é primo

Entre com um número inteiro (zero para encerrar): 4443
Número 4443 é composto e seu primeiro divisor é 3; 3 x 1481 = 4443

Entre com um número inteiro (zero para encerrar): 4447
O número 4447 é primo

Entre com um número inteiro (zero para encerrar): 0

Nenhum comentário:

Postar um comentário