Мета
Створіть програму / функцію, яка приймає вхід N
, перевірте, чи N
випадкові пари цілих чисел є відносно простими, і повернеться sqrt(6 * N / #coprime)
.
TL; DR
Ці виклики - це моделювання алгоритмів, які потребують лише природи та вашого мозку (і, можливо, деяких повторно використаних ресурсів), щоб наблизити Pi. Якщо вам справді потрібен Пі під час апокаліпсису зомбі, ці методи не витрачають боєприпаси ! Попереду ще вісім викликів. Отримайте рекомендації в пісочниці .
Моделювання
Що ми моделюємо? Що ж, ймовірність того, що два випадкових цілих числа є відносно простими (тобто coprime або gcd == 1) є 6/Pi/Pi
, тож природним способом обчислити Pi було б зібрати два відра (або жменьки) гірських порід; порахуйте їх; подивіться, чи їх gcd дорівнює 1; повторити. Зробивши це кілька разів, sqrt(6.0 * total / num_coprimes)
будемо прагнути до цього Pi
. Якщо обчислення квадратного кореня в пост-апокаліптичному світі змушує вас нервувати, не хвилюйтеся! Для цього існує метод Ньютона .
Як ми моделюємо це?
- Візьміть внесок
N
- Виконайте наступні
N
рази:- Рівномірно генерувати випадкові додатні цілі числа
i
таj
- З
1 <= i , j <= 10^6
- Якщо
gcd(i , j) == 1
:result = 1
- Ще:
result = 0
- Рівномірно генерувати випадкові додатні цілі числа
- Візьміть суму
N
результатів,S
- Повернення
sqrt(6 * N / S)
Специфікація
- Вхідні дані
- Гнучка, приймайте введення будь-яким із стандартних способів (наприклад, параметр функції, STDIN) та в будь-якому стандартному форматі (наприклад, String, Binary)
- Вихідні дані
- Гнучкі, дають вихід будь-яким із стандартних способів (наприклад, повернення, друк)
- Білий простір, відсталий та провідний простір білого кольору прийнятний
- Точність, будь ласка, вкажіть принаймні 4 знаки після коми (тобто
3.1416
)
- Оцінка балів
- Найкоротший код виграє!
Випробування
Ваш результат може не співпадати з ними через випадкові випадковість. Але в середньому ви повинні отримати приблизно таку точність для заданого значення N
.
Input -> Output
----- ------
100 -> 3.????
10000 -> 3.1???
1000000 -> 3.14??
N=10^6
.
N = 1000000
чи це нормально, якщо програма повертається, наприклад, переповнення стека, якщоN
воно занадто велике?