desculpa só ver o tópico agora. ainda bem que chegaste a uma solução, posso por em duvida a sua veracidade ?
a regra de um número ser primo é:
- O número é primo se e só se for divisível por 1 ou por ele próprio (claro que estamos a falar em |N).
mas essa regra tem uma segunda interpretação:
- O número é primo que não for possível criar uma factorização este em número primos.
dou-te uns exemplos de números que não são primos:
9 = 3x3
27 = 3x3x3
231 = 3x7x11
vamos agora validar o teu código:
- se nao for primo sera divisivel por um dos impares ate 3
se eu arranjar um número que a sua faactorização não tenha um número impar, então a suposição está incorrecta:
- 2x2x2 = 8
8 não é divisivel por um número impar, no entanto não é primo
conclusão : o código está errado.
----------
por outro lado, a regra que te apresentei deu origem aos metodos actuais de verificação de números primos:
- se o número a verificar for divisível por um número, então este faz parte da sua factorização, o que implica que basta verificar os números primos até ao número a verificar
melhoramento (programação dinâmica) : ir guardando os números primos obtidos e só verificar estes
↧