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.

