Decyzja, czy interwał zawiera liczbę pierwszą

14

Jaka jest złożoność decyzji, czy przedział liczb naturalnych zawiera liczbę pierwszą? Wariant Sita Eratostenesa daje algorytm , w którym jest długością przedziału, a ukrywa czynniki polilarytmiczne w punkcie początkowym przedziału; czy możemy zrobić lepiej (pod względem samego )?LLO~(L.)L.L.

Elliot Gorokhovsky
źródło
1
Nitpick: Sito Eratostenesa nie podaje jedynie czynników polikarytmicznych w punkcie początkowym, nawet dla przedziału długości 1. Rzeczywiście można sprawdzić, czy liczba jest liczbą pierwszą jest czasem, który jest liczbą polilogarytmiczną w liczbie (= wielomian wielkości reprezentacji), ale wymaga to algorytmu znacznie bardziej zaawansowanego niż sito Eratostenesa.
Vanessa
1
@Squark Prawda, powinien był określić „pseudopierwszy względem danej podstawy czynnikowej”. Chociaż wraz ze wzrostem punktu początkowego przedziału czasowego oczekiwany koszt testowania pierwszeństwa spada do zera ...
Elliot Gorokhovsky

Odpowiedzi:

27

Zastrzeżenie : Nie jestem ekspertem w teorii liczb.

Krótka odpowiedź : jeśli jesteś gotów do przyjęcia „rozsądnych liczbowo teoretyczne przypuszczenia”, to możemy powiedzieć, czy jest najlepszym w przedziale w czasie . Jeśli nie jesteś skłonny przyjąć takiego założenia, istnieje piękny algorytm dzięki Odlyzko, który osiąga , i uważam, że jest to najlepiej znany.[n,n+Δ]polylog(n)n1/2+o(1)

Bardzo pomocny link z dużą ilością świetnych informacji o ściśle powiązanym problemie : projekt PolyMath dotyczący deterministycznych algorytmów wyszukiwania liczb pierwszych .

Długa odpowiedź :

Jest to trudny problem, aktywny obszar badań i wydaje się być ściśle związany z trudną kwestią ograniczania luk między liczbami pierwszymi. Twój problem jest moralnie bardzo podobny do problemu znalezienia liczby pierwszej między a deterministycznie, który był ostatnio przedmiotem projektu PolyMath . (Jeśli chcesz naprawdę zagłębić się w te pytania, ten link jest doskonałym miejscem do rozpoczęcia.) W szczególności nasze najlepsze algorytmy dla obu problemów są zasadniczo takie same.2 nn2)n

W obu przypadkach najlepszy algorytm zależy w dużej mierze od wielkości przerw między liczbą pierwszą. W szczególności, jeśli jest takie, że zawsze istnieje liczba pierwsza między n i n + f ( n ) (i f ( n ) można obliczyć efektywnie), to zawsze możemy znaleźć liczbę pierwszą w czasie p o l y l o g ( n ) f ( n ) w następujący sposób. Aby ustalić, czy istnieje liczba pierwsza między n i n +fa(n)nn+fa(n)fa(n)polylosol(n)fa(n)n , najpierw sprawdź, czy Δ f ( n ) . Jeśli tak, wyślij tak. W przeciwnym razie po prostu iteruj przez liczby całkowite między n i n + Δ i przetestuj każdą z nich pod kątem pierwszeństwa i odpowiedz tak, jeśli znajdziesz liczbę pierwszą, a nie inaczej. (Można to zrobić deterministycznie, dlatego deterministyczne znalezienie liczby pierwszej między n a 2 n jest tak ściśle związane z ustaleniem, czy liczba pierwsza występuje w określonym przedziale.)n+ΔΔfa(n)nn+Δn2)n

polylosol(n)fa(n)=O(log2)n)n3)1/logn

fa(n)O(n)fa(n)O(nlogn)no(1)

O~(n0,525)n0,025

Noah Stephens-Davidowitz
źródło
3
kk
3
π(x): =\ # liczb pierwszych poniżej xpn+k-pnpn+1-pn