Paulo Nobre Postado Dezembro 19, 2004 Denunciar Share Postado Dezembro 19, 2004 Alguém poderia me passar um código para achar os números primos num determinado intervalo, por exemplo de 1 a 1000? Link para o comentário Compartilhar em outros sites More sharing options...
0 Paulo Nobre Postado Dezembro 21, 2004 Autor Denunciar Share Postado Dezembro 21, 2004 Estou tentando o código abaixo para achar os primos entre 2 e n, mas está dando totalmante errado. Alguém poderia ajudar.Editei o código anterior, mas continua dando erro.procedure TfrmPrincipal.cmdMostrarPrimos1Click(Sender: TObject);Var n: Integer;//Número primo limítrofe i: Integer; //Contador do laço; j: integer; R: Integer;// resto da divisãobegin n:= StrToInt(txtn1.Text); memo2.Clear; If n<2 Then begin MessageBox(handle,'Um número natural maior do que 2 deve ser digitado !','ATENÇÃO',MB_IconExclamation); txtn1.Text:= ''; txtn1.SetFocus; abort; end; If n = 2 Then begin MessageBox(handle,'Dois é um número primo. Na realidade o único número primo par e positivo !','ATENÇÃO',MB_IconExclamation); memo2.Lines.Add(IntToStr(2)); abort; end; If n = 3 Then begin memo2.Lines.Add(IntToStr(2)); memo2.Lines.Add(IntToStr(3)); end; If n = 4 Then begin memo2.Lines.Add(IntToStr(2)); memo2.Lines.Add(IntToStr(3)); end; If n > 4 Then begin//1 memo2.Lines.Add(IntToStr(2)); memo2.Lines.Add(IntToStr(3)); For i:= 4 to n do begin//2 For j:= 2 to i - 1 do begin//3 R:= i mod j; If R = 0 Then //Não faz nada Else memo2.Lines.Add(IntToStr(i)); end;//3 end;//2 end;//1end;Quando digito 5 para saber quantos primos existem de 2 até 5 aparecem 2,3,4,5,5,5.Sei que o erro está na parte ...For i:= 4 to n do begin//2 For j:= 2 to i - 1 do begin//3 R:= i mod j; If R = 0 Then //Não faz nada Else memo2.Lines.Add(IntToStr(i)); end;//3 end;//2Na realidade preciso que memo2.Lines.Add(IntToStr(i)); seja executado apenas se R<>0 sempre. Link para o comentário Compartilhar em outros sites More sharing options...
0 Progr'amador Postado Dezembro 21, 2004 Denunciar Share Postado Dezembro 21, 2004 Alguém poderia me passar um código para achar os números primos num determinado intervalo, por exemplo de 1 a 1000? Ae vai exemplo:function IntPrime(Value: Integer): Boolean; var i : integer; begin Result := False; Value := Abs(Value); if Value mod 2 <> 0 then begin i := 1; repeat i := i + 2; Result:= Value mod i = 0 until Result or ( i > Trunc(sqrt(Value)) ); Result:= not Result; end; end; procedure TForm1.Button2Click(Sender: TObject); var i : integer; begin for i := 1 to 1000 do if IntPrime(i) then if i = 1 then Edit2.Text := IntToStr(i) else Edit2.Text := Edit2.text+', '+IntToStr(i); end;Esse código traz todos os nº primos de 1 a 1000 em um edit, acho que é do jeito que você ta querendo...Abs. Progr'amador. Link para o comentário Compartilhar em outros sites More sharing options...
0 Paulo Nobre Postado Dezembro 22, 2004 Autor Denunciar Share Postado Dezembro 22, 2004 Perfeitamente progr'amador.valeu e obrigado Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Paulo Nobre
Alguém poderia me passar um código para achar os números primos num determinado intervalo, por exemplo de 1 a 1000?
Link para o comentário
Compartilhar em outros sites
3 respostass a esta questão
Posts Recomendados