/
NikolayIvkin
/
TheAlgorithms
Обзор
Документация
Войти
/
NikolayIvkin
/
TheAlgorithms
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
src/main/java/com/thealgorithms/maths/PiNilakantha.java
44 строки
1 KB
Piotr Idzik
style: enable `HideUtilityClassConstructor` in checkstyle (#5147)
08 май 2024, 09:58
Не верифицирован
08 май 2024, 09:58
d3bb691
Код
Авторство
О чём код?
package com.thealgorithms.maths; public final class PiNilakantha { private PiNilakantha() { } // Calculates Pi using Nilakantha's infinite series // Method 2 in the following link explains the algorithm // https://en.scratch-wiki.info/wiki/Calculating_Pi public static void main(String[] args) { assert calculatePi(0) == 3.0; assert calculatePi(10) > 3.0; assert calculatePi(100) < 4.0; System.out.println(calculatePi(500)); } /** * @param iterations number of times the infinite series gets repeated Pi * get more accurate the higher the value of iterations is Values from 0 up * to 500 are allowed since double precision is not sufficient for more than * about 500 repetitions of this algorithm * @return the pi value of the calculation with a precision of x iteration */ public static double calculatePi(int iterations) { if (iterations < 0 || iterations > 500) { throw new IllegalArgumentException("Please input Integer Number between 0 and 500"); } double pi = 3; int divCounter = 2; for (int i = 0; i < iterations; i++) { if (i % 2 == 0) { pi = pi + 4.0 / (divCounter * (divCounter + 1) * (divCounter + 2)); } else { pi = pi - 4.0 / (divCounter * (divCounter + 1) * (divCounter + 2)); } divCounter += 2; } return pi; } }