Verificar se um número é primo e inteiro positivo em pascal!

Durante minhas aulas de laboratório de algoritmos, sugiu a dúvida entre os alunos de como era possível verificar se um número era inteiro e positivo e em caso afirmativo dizer se era primo ou não.

Como nós estamos mais acostumados a usar o operador “mod” e este suporta apenas valores declarados como “Integer”, não poderiamos deixar o usuário digitar um número com casas decimais.

Por isso dediquei algum tempo para provar que isto era possível, e não é tão complicado, bastou analisar bem o problema, e pesquisar um pouco a linguagem Pascal. Já que não é objetivo da disciplina um estudo avançado da linguagem, eu mesmo estou passando a solução aos alunos.

O fonte do programa (.pas) pode ser baixado aqui, ou abaixo temos o fonte do programa, com testes realizados no ambiente Free Pascal.

program primo;
{************************************************************************
Autor: Professor Eduardo Comin
Data: 15/05/2009

Objetivo: demonstrar que é poss¡vel verificar se um número
é inteiro e positivo e em caso afirmativo testar se é primo.

*************************************************************************}
uses crt;
var
i, qtde: integer;
num : real;
{preciso usar real para que aceite um n£mero com casas digitado pelo usu rio}

begin

clrscr;{Limpa a tela}

writeln(‘Informe um n£mero inteiro e positivo ‘);
readln(num);

{inicialização das variáveis}
qtde := 0;
i := 1;

{A função ” frac ” me retorna a parte fracionária de um número,
ou seja o que vem depois do ponto}

{A função ” int ” me retorna a parte inteira do número}

if (frac(num) = 0) and (num > 0) then
begin

repeat

if frac(num/i) = 0 then
qtde := qtde + 1;
i := i + 1; {incremento minha vari vel de controle do loop}

until i = int(num);

{se a quantidade de vezes que sobrou zero for maior que dois não é primo}
if qtde > 2 then
writeln(‘o número informado:’, num:10:0, ‘ não é primo’)
else
writeln(‘o número informado:’, num:10:0, ‘ ? primo’);

end else
writeln(‘O número informado não é um número inteiro e positivo’);

readln;
end.

2 ideias sobre “Verificar se um número é primo e inteiro positivo em pascal!

Deixe uma resposta

O seu endereço de email não será publicado Campos obrigatórios são marcados *

Você pode usar estas tags e atributos de HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>