Skip to content

Latest commit

 

History

History
executable file
·
29 lines (21 loc) · 1009 Bytes

File metadata and controls

executable file
·
29 lines (21 loc) · 1009 Bytes

Há muitos algotimos para esta tarefa.

Vamos utilizar um loop dentro de outro (isto é, aninhado):

Para cada i no intervalo {
  testar se  i tem um divisor de 1 a i
  se sim => o valor não é um primo
  se não => o valor e um primo, mostre-o
}

O código usando um label:

let n = 10;

nextPrime:
for (let i = 2; i <= n; i++) { // para cada i...

  for (let j = 2; j < i; j++) { // procurar um divisor..
    if (i % j == 0) continue nextPrime; // não é primo, passar para o próximo i
  }

  alert( i ); // é primo
}

Há muitas maneiras de otimizá-lo. Por exemplo, podemos procurar divisores de 2 até a raiz quadrada de i. De qualquer modo, se quisermos ser realmente eficientes para intervalos maiores, precisamos mudar a abordagem e nos embasar em matemática avançada e algoritmos complexos como o Crivo Quadrático, o Crivo do Corpo de Números Geral, etc.