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!