Есть ли способ получить сумму произведений числа Эйлера и целого числа, где целое число может составлять до 10^6000?

Поэтому я попытался использовать BigDecimal, который дает мне значение числа Эйлера до 50 десятичных знаков. Но так как значение ограничения настолько велико, число может варьироваться от 1 до 10^6000, и, следовательно, я не получаю никакой точности (обеспечение его оптимальности - другая проблема). Вот блок кода:

for(int i=1; i<n+1; i++){
 // i is the integer value and bd is the value of the euler's number, so below i am multiplying the value of i with the euler's number
 BigDecimal x = BigDecimal.valueOf(i).multiply(bd);
 //Here i am taking floor of the above calculated value
 x.setScale(0, RoundingMode.HALF_UP);
 //and here sum is floor[1*euler's no] + floor[2*euler's number] + ... + floor[n*euler's number] 
 sum += x.intValue();
}

1 ответ

Решение

Я думаю, что вы спрашиваете, как вычислить число Эйлера (т.е. e) с большей точностью.

Ответ будет заключаться в реализации алгоритма, который быстро сходится. После небольшого исследования я нашел эту страницу "Расчет стоимости е". Внизу это описывает Формула Братьев:

e =​ Sum(n=0, n=​∞​​​, (2n+2)​​ / (2n+1)!​​ )

который сходится очень быстро. Вы можете кодировать это в Java, используя BigDecimal, чтобы вычислить с точностью до любого количества цифр, что вам нужно.

Смотрите также:

который (если я правильно понял!) дает более сложную формулу, которая сходится еще быстрее.

Другие вопросы по тегам