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
Assinar:
Postar comentários (Atom)
Nenhum comentário:
Postar um comentário