Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Dúvida em relação a números primos

Olá, estou com uma dúvida em relação a esse trecho de código:


for (int i = 2; i * i <= numero; i++) {

            if (numero % i == 0) {
                return false;
            }

        }

Especificamente na parte do i * i, apenas o i já não seria suficiente para encontrar números que não são primos? Não entendi o porque da multiplicação.

1 resposta
solução!

Oi, Lucas, tudo bem?

A utilização de i * i na condição do loop for em algoritmos de verificação de números primos está relacionada a uma otimização de desempenho. A ideia é que, se um número não é primo, ele pode ser decomposto em dois fatores, a e b, ambos menores ou iguais à raiz quadrada do número em questão.

No seu código, i * i representa o quadrado do iterador i. Portanto, o loop é executado enquanto i * i for menor ou igual ao número dado. Isso significa que o loop percorrerá apenas os possíveis fatores até a raiz quadrada do número, economizando tempo de execução.

Se i * i for maior que o número, então não é necessário verificar mais, pois os fatores já teriam sido encontrados anteriormente no loop. Essa otimização ajuda a reduzir a quantidade de iterações necessárias para verificar se um número é primo.

Espero ter ajudado. Caso tenha dúvidas, conte com o fórum.

Abraços!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!