私は、小数点以下50桁までのオイラーの数値を私に与えるBigDecimalを使ってみました。しかし、制約値がこの値より大きいので、数値は1から10^6000の範囲になる可能性があります。したがって、精度を得ることはできません(別の問題として最適化する)。には、オイラーの数と整数の積の和を求める方法はありますか?整数は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();
}
「合計」とは何ですか? BigDecimalも同様に作成する必要があります。 – lucasvw
コードスニペットは、10^6000の数字を合計したいと示唆しています。それに幸いです。 – Henry
私は最初に '(n *(n + 1)/ 2) 'という式を使ってbd * once *を乗じて切り捨てることを提案したいと考えましたが、フロアを追加する必要はないしたがって、1 * eは2になり、2 * eは5になり、小計の合計は7になります。一方、3 * eは8になり、すでに1の誤差が与えられます。あなたはループする必要があります、私は恐れています。 –