Ir ao conteúdo

Menor número primo em um intervalo fechado


NaelRamos

Posts recomendados

Postado

Galera,estou com dificuldade no seguinte exercício:

"Faça um programa que recebe do usuário dois inteiros que

representam um intervalo inteiro fechado. Depois, calcule qual é o maior número primo desse

intervalo. Se não houver número primo no intervalo informado, o programa deve exibir 0"

Nao estou conseguindo achar os números primos,agradeço quem puder ajudar.

Postado
program exe9;
{Faça um programa que recebe do usuário dois inteiros que representam um intervalo inteiro
fechado. Depois, calcule qual é o maior número primo desse intervalo.
Se não houver número primo no intervalo informado, o programa deve exibir 0
(zero).}
{$APPTYPE CONSOLE}

{$R *.res}

uses
System.SysUtils;

var
I,J,num1,num2,menornumero,cont : integer;

function primo(): integer; //Função de teste do maior número primo.
var
ind : longint;
achou : boolean;
begin
ind := 3;
achou := false;
if (I mod ind) <> 0 then
begin

achou := true;
end
else begin
INC (ind,2);
end;


if (achou = true) then
begin

menornumero := I;
if menornumero >= I then
begin
menornumero := menornumero;
end;
if menornumero < I then
begin
menornumero := I;
end;

end;

end;







procedure impri();//Procedimento para imprimir o maior número primo na tela.
begin
writeln ('O menor número primo é: ',menornumero);
end;

begin
//lendo os números para delimitar o intervalo fechado.
writeln ('Digite dois números:');
write ('1º:');
read (num1);
write ('2º:');
read (num2);
//Definição dos limites
if num2 > num1 then
begin
for I := num1 to num2 do
begin
for J := 2 to (trunc(sqrt(I))) do
begin
primo(); //Chamando a função
end;
end;
end
else begin
for I := num2 to num1 do
begin
primo(); //Chamando a função
end;
end;




impri();//Chamando o procedimento.



writeln;
writeln ('Fim!Pressione qualquer tecla para sair.');
readln;
readln;
end.

  • Membro VIP
Postado

Olá NaelRamos.

Você precisa separar as pastes... veja, primo é uma coisa, e menor primo é outra completamente diferente. Então, sugiro que faça assim: separe, de fato, uma coisa da outra. Tenha um procedimento chamado primo() (retornando um boolean - true = primo ou false = não primo) e outro menorPrimo() (retornando um interger, que será o menor primo ou 0 se não existir nenhum).

Primeiro se preocupe em atestar que primo() está calculando certo o número... depois, faça o menorPrimo(), que por sua vez vai utilizar o primo()...

Obs.: Se não tiver conhecimentos sobre boolean dê uma pesquisada rápida, é bem simples. Ou caso deseja, pode utilizar qualquer outro tipo, como o interger mesmo, e definir outro padrão, como 1=primo e 0=não primo...

Att,

Simon Viegas


{Faça um programa que recebe do usuário dois inteiros que representam um intervalo inteiro
fechado. Depois, calcule qual é o maior número primo desse intervalo.
Se não houver número primo no intervalo informado, o programa deve exibir 0
(zero).}
{$APPTYPE CONSOLE}

{$R *.res}

uses
System.SysUtils;

var
I,J,num1,num2,menornumero,cont : integer;

function primo(): integer; //Função de teste do maior número primo.
var
ind : longint;
achou : boolean;
begin
ind := 3;
achou := false;
if (I mod ind) <> 0 then
begin

achou := true;
end
else begin
INC (ind,2);
end;


if (achou = true) then
begin

menornumero := I;
if menornumero >= I then
begin
menornumero := menornumero;
end;
if menornumero < I then
begin
menornumero := I;
end;

end;

end;







procedure impri();//Procedimento para imprimir o maior número primo na tela.
begin
writeln ('O menor número primo é: ',menornumero);
end;

begin
//lendo os números para delimitar o intervalo fechado.
writeln ('Digite dois números:');
write ('1º:');
read (num1);
write ('2º:');
read (num2);
//Definição dos limites
if num2 > num1 then
begin
for I := num1 to num2 do
begin
for J := 2 to (trunc(sqrt(I))) do
begin
primo(); //Chamando a função
end;
end;
end
else begin
for I := num2 to num1 do
begin
primo(); //Chamando a função
end;
end;




impri();//Chamando o procedimento.



writeln;
writeln ('Fim!Pressione qualquer tecla para sair.');
readln;
readln;
end.
program exe9;

  • Moderador
Postado

Caso o autor do tópico necessite, o mesmo será reaberto, para isso deverá entrar em contato com a moderação solicitando o desbloqueio.

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...