Fórum números primos #280027
04/05/2005
0
Rafael Santana
Curtir tópico
+ 0Posts
04/05/2005
Rjun
function Primo(numero: integer): boolean; var Divisores: integer; i: integer; begin result := false; Divisores := 0; for i := 1 to numero do if ((numero mod i) = 0) then inc(Divisores); if (numero = 1) or (Divisores = 2) then result := true; end;
Gostei + 0
04/05/2005
Rafael Santana
obrigado
Gostei + 0
04/05/2005
Rjun
Entao, fiz um loop do numero 1 ate o numero informado. Em cada volta do loop faço a divisao do numero pelo indice e vejo se o resto é zero. Se for zero, entao o indice é um divisor do numero.
Incremento a variavel Divisores e ao final da funcão vejo se o número de divisores é igual a 2. Se for, então o numero informado é um numero primo.
A função precisa de uma correçao no final. O código
if (numero = 1) or (Divisores = 2) then result := true;
deve ser trocado por :
if Divisores = 2 then result := true;
Gostei + 0
04/05/2005
Brunobaco
Amigo, a variavel numero é o numero passado como parametro. Então entra no laço for. Qdo se faz um numero mod i, o codigo está pegando o resto da divisão apenas, e não quociente. Se o resultado for zero (ou seja, divisivel pelo numero), incrementa a variável divisores. após terminar o for, verifica se o numero passado é o numero 1 (o numero 1 é primo, e ele só será dividido por 1, ou seja, uma unic vez), e se divisores for igual a zero, significa que ele só foi dividido 2 vezes, uma vez por 1 (todos são divisíveis por 1) e por ele mesmo. Isso significa que ele é primo.
Explicação: Um número primo é aquele que é divisivel por 1 e por ele mesmo.
Entendeu??
Espero ter ajudado
Bruno Augusto
Gostei + 0
04/05/2005
Edilcimar
Gostei + 0
04/05/2005
Marco Salles
O Problema é que a Grande muaioria de Números , Não retornan Raiz Quadrada Inteiras
Por exemplo ::: 12346787980980901 é Primo ?????
Sei la:???
e sua raiz quadrada é 3513799.65008 :cry:
Gostei + 0
04/05/2005
Edilcimar
Gostei + 0
04/05/2005
Andremuller
function Primo(numero: integer): boolean; var Divisores: integer; i: integer; begin result := false; Divisores := 0; for i := 1 to numero do if ((numero mod i) = 0) then begin inc(Divisores); if Divisores > 2 then Break; end; if (numero = 1) or (Divisores = 2) then result := true; end;
Gostei + 0
04/05/2005
Edilcimar
Gostei + 0
04/05/2005
Marco Salles
Sera :?: :?:
Que para analisar o Numero 12346787980980901 a gente analisa o Numero 3513799 :?: :?: :?:
Bem , o fato é que o assunto é polemico:
Ver
e mesmo outro Post interresante:
http://forum.devmedia.com.br/viewtopic.php?t=41137&highlight=primos&sid=f1a58c8990777a29760a6189af124603
Gostei + 0
04/05/2005
Rjun
Bom, seguindo a lógica para saber se 25 é primo, bastaria chegar até 5.
5 é primo mas 25 não, ja que 25 é divisivel por 1, 5, e 25. Então acho que sua lógica esta errada. Se alguém tiver outra sugestão posta aí.
Gostei + 0
04/05/2005
Edilcimar
Gostei + 0
04/05/2005
Andremuller
O negócio então é fazer um mix das duas idéias.
Se dá pra fazer só até a raiz quadrada, o que pode ser porque não tenho certeza, melhor, só que de qualquer forma deve-se parar ao encontrar o terceiro divisor
Gostei + 0
04/05/2005
Massuda
Isso parte do princípio que todo número natural não nulo é divisível por 1 e por ele próprio; qualquer outro divisor estará entre 2 e a raiz quadrada do valor testado.
Gostei + 0
04/05/2005
Edilcimar
para saber se o número 25 é primo basta ir de 1 até a raiz de 25 (que é 5), se até aí o número só for divisível por 1 então ele é primo, como 25 é divisível por 5 então 25 não é primo
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)