Qual é a dúvida nesse exercício? Como descobrir se um número é primo? Como implementá-lo?
Utiliza-se o operador % ( pelo menos em C e derivados ) para saber o resto de uma divisão. Se o resto da divisão de um número for 0 apenas para a divisão por 1 e ele próprio então é primo.
9 % 2 != 0
9 % 3 == 0
9 não é primo, 9 / 3 = 3.
5 % 2 != 0
5 % 3 != 0
5 % 4 != 0
5 é primo.
Agora é só aplicar um ciclo com este raciocínio, depois entram então as optimizações, mas isso também é só matemática.
EDIT:
Se ainda não sabes o que é a raiz quadrada se calhar é melhor não ires por aí mas se tiveres interesse:
É a operação inversa da potência.
3^2 = 9 ( 3 * 3 )
raíz quadrada de 9 = 3 ( 3^2 = 9 );
Em vez de dividires o número pelos números até n, podes apenas dividir até à raiz quadrada de n. Para não ter que utilizar a função da raiz quadrada também dá dividindo enquanto n * n < número a testar.
Mas outra optimização muito eficaz:
Utiliza-se o operador % ( pelo menos em C e derivados ) para saber o resto de uma divisão. Se o resto da divisão de um número for 0 apenas para a divisão por 1 e ele próprio então é primo.
9 % 2 != 0
9 % 3 == 0
9 não é primo, 9 / 3 = 3.
5 % 2 != 0
5 % 3 != 0
5 % 4 != 0
5 é primo.
Agora é só aplicar um ciclo com este raciocínio, depois entram então as optimizações, mas isso também é só matemática.
EDIT:
Se ainda não sabes o que é a raiz quadrada se calhar é melhor não ires por aí mas se tiveres interesse:
É a operação inversa da potência.
3^2 = 9 ( 3 * 3 )
raíz quadrada de 9 = 3 ( 3^2 = 9 );
Em vez de dividires o número pelos números até n, podes apenas dividir até à raiz quadrada de n. Para não ter que utilizar a função da raiz quadrada também dá dividindo enquanto n * n < número a testar.
Mas outra optimização muito eficaz:
Utilizar apenas números ímpares tanto no número a testar como nos divisores ( excepto o 2 ).
Última edição: