Цель
Создайте программу / функцию, которая принимает входные данные N, проверяет, являются ли Nслучайные пары целых чисел относительно простыми, и возвращает sqrt(6 * N / #coprime).
TL; DR
Эти проблемы представляют собой симуляции алгоритмов, которые требуют только природы и вашего мозга (и, возможно, некоторых ресурсов многократного использования) для приближения Pi. Если вам действительно нужен Пи во время апокалипсиса зомби, эти методы не тратят патроны ! Есть еще восемь задач. Оформить запись в песочнице, чтобы дать рекомендации.
моделирование
Что мы моделируем? Итак, вероятность того, что два случайных целых числа являются относительно простыми (т.е. взаимно простыми или 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 - Else:
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оно слишком велико?