TÓPICO

Dica para uma verificação mais eficiente

daniiel perguntou 4 years ago

Existem diversos métodos para verificar se um número é primo, é claro. Nesta questão, a força bruta não soluciona o problema, pois possui um custo computacional muito alto.

Para quem estava utilizando o método de força bruta (verificar para todo i menor que N, i > 2 se N é divisível por i), basta verificar isso apenas para todo i <= piso da raiz quadrada de n. Todo número composto tem pelo menos um fator primo menor ou igual a raiz dele mesmo. Então, se um número não for divisível para nenhum número menor ou igual a sua raiz, certamente é primo.

A complexidade cai de O(n) para O(sqrt(n)) e já é suficiente para solucionar o problema e remover o erro de Time Limit Exceeded. Mas há métodos ainda mais eficientes que este.

Este tópico foi resolvido e não pode receber novas respostas.