Liczby pierwsze o określonej liczbie bitów

Liczby pierwsze o określonej liczbie bitów
Carlj28
  • Rejestracja:prawie 14 lat
  • Ostatnio:prawie 8 lat
  • Postów:141
0

Witam, istnieje jakaś funkcja która sprawnie w sposób losowy wyznaczy mi liczbę pierwszą o długości co najmniej 1000 bitów?


"I have no details because sometimes I feel lost, in my code."
msm
Administrator
  • Rejestracja:ponad 16 lat
  • Ostatnio:11 miesięcy
0

Wybierasz losową liczbę o długości co najmniej 1000 bitów, wykonujesz http://en.wikipedia.org/wiki/Miller%E2%80%93Rabin_primality_test, powtarzasz aż znajdziesz. To taki dość klasyczny sposób (ofc miller-rabina możesz zamienić na coś innego zawsze).

Jako że \lim_{x \to \inf} \frac{\pi(x)}{x / \ln(x)} = 1, (gdzie Pi(x) to ilość liczb pierwszych poniżej x), masz spore szanse że szybko trafisz na jakąś liczbę pierwszą.

Ściślej, jeśli wybierzesz liczbę pierwszą z przedziału (1, 21000), szansa na to że będzie pierwsza wynosi blisko \frac{1}{ln(2</sup>{1000})} = 0.00144269. Po wybraniu 2000 (zaszalejemy) takich liczb, szansa na to że żadna z nich nie będzie pierwsza, wynosi (1-p)^{2000} = około 0.055716, czyli 5%.

edytowany 6x, ostatnio: msm

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.