Skip to content

Latest commit

 

History

History
29 lines (21 loc) · 1 KB

File metadata and controls

29 lines (21 loc) · 1 KB

Istnieje wiele algorytmów dla tego zadania.

Użyjmy pętli zagnieżdżonej:

Dla każdego i w przedziale {
  sprawdź jeśli i ma dzielnik od 1..i
  jeśli tak => wartość nie jest liczbą pierwszą
  jeśli nie => wartość jest liczbą pierwszą, pokaż 
}

Kod używając etykiety:

let n = 10;

nextPrime:
for (let i = 2; i <= n; i++) { // dla każdego i...

  for (let j = 2; j < i; j++) { // szukaj dziewlnika..
    if (i % j == 0) continue nextPrime; // nie liczba pierwsza idź do następnego i
  }

  alert( i ); // liczba pierwsza
}

Jest dużo miejsca na optymalizację. Na przykład, możemy szukać dzielników od 2 do pierwiastka kwadratowego i. Ale tak czy inaczej, jeśli chcemy być naprawdę wydajni w dużych odstępach czasu, musimy zmienić podejście i polegać na zaawansowanych matematykach i złożonych algorytmach, takich jak Sito kwadratowe, Ogólne sito ciała liczbowego itd.