Напишіть функцію або повну програму, яка приймає додатне число nі виконує nкроки ітеративного алгоритму для обчислення π, що має квадратичну конвергенцію (тобто приблизно вдвічі збільшує кількість точних цифр при кожній ітерації), після чого повертає або виводить 2 n правильних цифр (у т.ч. початок 3). Одним з таких алгоритмів є алгоритм Гаусса-Легенда , але ви можете вільно використовувати інший алгоритм, якщо хочете.
Приклади:
вхід 1→ вихідний 3.1
вхід 2→ вихідний 3.141
вхід 5→ вихід3.1415926535897932384626433832795
Вимоги:
- Кожна ітерація алгоритму повинна виконувати постійну кількість основних операцій, таких як додавання, віднімання, множення, ділення, потужність і корінь (з цілим показником / ступенем) - кожна така операція з "великими" цілими / десятковими числами рахується як одна парна якщо вона включає одну або кілька петель внутрішньо. Щоб було зрозуміло, тригонометричні функції та сили, що включають складні числа, не є основними операціями.
- Очікується, що алгоритм має етап ініціалізації, який також повинен мати постійну кількість операцій.
- Якщо алгоритму потрібно 1 або 2 ітерації, щоб отримати 2 n правильних цифр, ви можете виконувати до
n+2ітерацій, а не простоn. - Якщо це було недостатньо чітко, після правильних 2 n цифр ваша програма не повинна друкувати нічого іншого (наприклад, більш правильних цифр, неправильних цифр або повних творів Шекспіра).
- Ваша програма повинна підтримувати значення
nвід 1 до принаймні 20. - Ваша програма не повинна займати більше години для
n= 20 на сучасному комп’ютері (це не важке правило, але намагайтеся зробити це розумним). - Програма не повинна отримати більше 20 точних цифр після ініціалізації та першої ітерації алгоритму.
- Програма повинна бути запущена в Linux, використовуючи вільно доступне програмне забезпечення.
- У вихідному коді повинні використовуватися лише символи ASCII.
Оцінка:
Прямий код гольфу, виграє найкоротший код.
Переможець:
Переможець Digital Trauma, я нарешті закінчив виконувати його код на n = 20 (жартую). Спеціальний приз приходить на примо за його дуже швидке рішення пітона та інший алгоритм :)
~q^(n^2)відповідно до 1-го розділу та там, ~q^2згідно 2-го розділу.
