Jump to content


Photo

Ajuda Em Program Primo Em Pascal


  • Faça o login para participar
1 reply to this topic

#1 Gabrielnit

Gabrielnit

    Novato no fórum

  • Usuários
  • 3 posts
  • Sexo:Não informado

Posted 19/12/2009, 09:15

Ai galera mais uma vez requisito a ajuda de vcs, to tentando fazer um programa em pascal que me diga o terceiro primo a partir de um numero inteiro digitado pelo usuário, até agora consegui fazer esse código abaixo mas ele só me diz o próximo primo a partir do número não estou conseguindo fazer com que ele me diga o terceiro primo. Ah se o número digitado for primo ele já conta como primeiro primo. desde já agradeço a ajuda.


Program Primo ;
var numero,origem,propri: integer;
   
function executa: boolean;
var x: char;
begin
  writeln ('Deseja continuar?(S/N) ');
  x:= readkey;
  if (x = 's') then
  executa := true
  else if (x='n') then
  executa := false
  else executa := executa;
end; 

function pededado: integer;
var x: integer;
begin
  write ('Informe um número: ');
  readln(x);
  if (x>=1) and (x<=100) then
  pededado := x
  else pededado:=pededado;
end;

function eprimo(numero: integer): integer;
var i: integer;
     primo: boolean;
begin

  primo := true;
  for i:=2 to (numero-1) do
  if (numero mod i) = 0 then
  primo := false;
  if primo=false then   
  eprimo:=eprimo(numero+1);
 
end;

Begin
  while executa do
begin
  clrscr;
  origem := pededado;
  numero:=origem;
  propri:=eprimo(numero);

  writeln ('O número ',origem,' tem como próximo primo o número: ',propri);
   
end;
End.

Edição feita por: DarkSign, 29/03/2010, 10:39.
[code] facilita visualização de códigos extensos


#2 Rafaelbetatester

Rafaelbetatester

    Novato no fórum

  • Usuários
  • 5 posts
  • Sexo:Masculino
  • Localidade:Fortaleza

Posted 27/03/2010, 17:08

Program Primo;
{Rapaz...eu não entendi se é o terceiro primo,ou até o terceiro,mas vai 
os dois,outra coisa,eu não vou colocar essas coisas de deseja continuar,
pq eu não gosto.Bom eu ia usar a função pra verificar se é primo,mas vai 
ficar parecido com o teu,então não vou usar funções,logo minha soluçao vai ficar feio}

uses crt;

 var 
    cont,i,n:integer;          {Cont:Conta quantos primos já foram,i:variável do for,n:número de entrada}              
    ePrimo:boolean;            {Define se número é primo}
    v:array[1..3] of integer;  {Guarda os três primeiros primos a partir do consecutivo,mas por que depois do consecutivo?Pois eu não entendi se por exemplo,ao escrevermos 5 é para dizê-lo tbm}  
 Begin
 clrscr;
 cont:=0;     {O contador é 0inicialment}
 readln(n);     
 n:=n+1;            {Parte para o consecutivo}
 while(cont<3) do begin   {vai até o terceiro}
 ePrimo:=true;                
 for i:=2 to trunc(exp(1/2*ln(n))) do  {Só é necessário testar até a raiz quadrada,mas poderia ser até n-1}
 if n mod i=0 then ePrimo:=false;
 if ePrimo then begin
   cont:=cont+1;
   v[cont]:=n;      {guarda}                          
   end;
    
 n:=n+1;    {Muda n}   
 end;

 
 
 writeln('O terceiro primo a partir do consecutivo do número lido é ',v[3]);
 
 writeln;
 writeln('os três primeiros primos a partir do consecutivo do número lido são:');
 for i:=1 to 3 do
 write(v[i]:3);
 
    
 readkey;
 
 end.

rapaz eu fiz uma solução desorganizada,pq tô indo pra aula e eu ainda tô aprendendo a mexer nesse site.

Ahhhh e eu não sou muito bom em funções,comecei agora a estudar pascal em casa,eu sei criar funções,mas acho um pouco dificil ainda.

Edição feita por: DarkSign, 29/03/2010, 10:39.
[code] para códigos





1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq