Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.math.BigDecimal;
- import java.math.MathContext;
- import java.math.RoundingMode;
- public class Chudnovski {
- static final int LIMIT = 2;
- public static void main(String[] args) {
- MathContext mc = new MathContext(5000, RoundingMode.HALF_UP);
- BigDecimal sum = new BigDecimal(0).setScale(50, RoundingMode.HALF_UP);
- for (int k = 0; k < LIMIT; k++) {
- BigDecimal dividend = new BigDecimal(Math.pow(-1, k) * faculty(6 * k) * (545140134 * k + 13591409))
- .setScale(50, RoundingMode.HALF_UP);
- BigDecimal divisor = new BigDecimal(Math.pow(faculty(k), 3) * faculty(3 * k) * Math.pow(640320, 3 * k))
- .setScale(50, RoundingMode.HALF_UP);
- BigDecimal increment = (dividend.divide(divisor, mc)).setScale(50, RoundingMode.HALF_UP);
- System.out.println("inc: " + increment);
- sum = sum.add(increment).setScale(50, RoundingMode.HALF_UP);
- System.out.println("sum: " + sum);
- }
- BigDecimal pi = new BigDecimal(426880 * Math.sqrt(10005)).divide(sum, mc).setScale(50, RoundingMode.HALF_UP);
- System.out.println(pi);
- System.out.println(Math.PI);
- }
- private static long faculty(int i) {
- if (i <= 1) {
- return 1L;
- } else {
- return i * faculty(i - 1);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement