2500336111

2500336111



Generowanie liczb pierwszych metodą sita Eratostenesa

Utwórz ciąg nieskończony [2,3,4,5,6,...]. Dwa jest liczbą pierwszą. Usuń z ciągu wszystkie wielokrotności dwójki, ponieważ nie mogą być liczbami pierwszymi. Pozostaje ciąg [3,5,7,9,11,...]. Trzy jest liczbą pierwszą. Usuń z ciągu wszystkie wielokrotności trójki, ponieważ nie mogą być liczbami pierwszymi. Pozostaje ciąg [5,7,11,13,17,...]. Pięć jest liczbą pierwszą itd.

Na każdym etapie ciąg zawiera liczby, które nie są podzielne przez żadną z wygenerowanych do tej pory liczb pierwszych, więc pierwsza liczba tego ciągu jest liczbą pierwszą. Opisane kroki można powtarzać w nieskończoność.

#    let primes =

let rec sieve = function

LCons(p,nf) -> LConsfp, function () -> sieve (sift p (nf() ))) | LNil -> failwith "Impossible! Internal error." and sift p = lfilter (function n -> n mod p o 0) in sieve (lfrom 2)

val primes : int llist = LCons (2, <fun>)

Np.

#    Itakę (6,primes);;

- : int list = [2; 3; 5; 7; 11; 13]

Zdzisław Spławski


Programowanie funkcyjne



Wyszukiwarka

Podobne podstrony:
Generowanie liczb losowych metodą odwracania dystrybuanty. Metoda odwróconej dystrybuanty W przypadk
Metoda eliminacji w generowaniu liczb losowych. Metoda von Neuman na Użyteczna metodą generowania je
Wykład 5Listy leniwe Listy leniwe Funkcjonały dla list leniwych Przykład: generowanie liczb pierwszy
Generowanie liczb pierwszych „ na zamówienie ” Znalezienie kolejnej liczby pierwszej wymagałoby jedn
Lista 2 -Liczby pierwsze 1.    Korzystając z sita Eratostenesa znajdź wszystkie liczb
Sito Eratostenesa- algorytm pozwala na wyznaczenie liczb pierwszych mniejszych lub równych wartości
psy lab zaliczenie Grupa B I. Wyznaczyć metodą odwracania dystrybuanty formulę na generowanie liczb&
padku projektowania zaawansowanych urządzeń, pierwsza metoda nie jest zbyt dobrym wyjściem (zbyt duż

więcej podobnych podstron