Cel
Utwórz program / funkcję, która pobiera dane wejściowe N, sprawdź, czy Nlosowe pary liczb całkowitych są względnie pierwsze, i zwraca sqrt(6 * N / #coprime).
TL; DR
Wyzwania te są symulacjami algorytmów, które wymagają jedynie natury i twojego mózgu (i być może pewnych zasobów wielokrotnego użytku) do przybliżenia Pi. Jeśli naprawdę potrzebujesz Pi podczas apokalipsy zombie, te metody nie marnują amunicji ! Przed nami jeszcze osiem wyzwań. Zapoznaj się z postem w piaskownicy, aby uzyskać rekomendacje.
Symulacja
Co symulujemy? Prawdopodobieństwo, że dwie losowe liczby całkowite są względnie pierwsze (tj. Coprime lub gcd == 1), jest 6/Pi/Piwięc naturalnym sposobem obliczenia Pi byłoby zgarnięcie dwóch wiader (lub garści) kamieni; Policz je; sprawdź, czy ich gcd wynosi 1; powtarzać. Po zrobieniu tego kilka razy, sqrt(6.0 * total / num_coprimes)będzie dążył do Pi. Jeśli obliczanie pierwiastka kwadratowego w postapokaliptycznym świecie wywołuje niepokój, nie martw się! Jest na to Metoda Newtona .
Jak to symulujemy?
- Weź wkład
N - Wykonaj następujące
Nczasy:- Jednolicie generują losowe liczby całkowite dodatnie,
iorazj - Z
1 <= i , j <= 10^6 - Jeżeli
gcd(i , j) == 1:result = 1 - Jeszcze:
result = 0
- Jednolicie generują losowe liczby całkowite dodatnie,
- Weź sumę
Nwyników,S - Powrót
sqrt(6 * N / S)
Specyfikacja
- Wejście
- Elastyczny, przyjmuj dane wejściowe na dowolny ze standardowych sposobów (np. Parametr funkcji, STDIN) i w dowolnym standardowym formacie (np. Ciąg, Binarny)
- Wydajność
- Elastyczny, daje wydruk w dowolny ze standardowych sposobów (np. Zwrot, wydruk)
- Dopuszczalne są białe pola, końcowe i białe znaki wiodące
- Dokładność, proszę podać co najmniej 4 miejsca dziesiętne dokładności (tj.
3.1416)
- Punktacja
- Najkrótszy kod wygrywa!
Przypadki testowe
Twój wynik może się nie zgadzać z powodu losowej szansy. Ale średnio powinieneś uzyskać taką dokładność dla danej wartości N.
Input -> Output
----- ------
100 -> 3.????
10000 -> 3.1???
1000000 -> 3.14??
N=10^6.

N = 1000000czy jest w porządku, jeśli program zwróci np. Przepełnienie stosu, jeśliNjest zbyt duże?