Skip to content

Instantly share code, notes, and snippets.

@CandyMi
Last active December 5, 2021 17:11
Show Gist options
  • Save CandyMi/7bc24d6aa0793e59f80b9b375d9fa01b to your computer and use it in GitHub Desktop.
Save CandyMi/7bc24d6aa0793e59f80b9b375d9fa01b to your computer and use it in GitHub Desktop.
Lua、python、js根据Nilakantha级数计算Pi的近似值.

介绍

Nilakantha 级数:

  1. 从3开始依次交递加、减以4为分子、三个连续整数乘积为分母的分数.
  2. 每次迭代时3个连续整数中的最小整数是上次迭代时三个整数中的最大整数。
  3. 然后经过反复计算10万次,则可以得到精确到小数点后12位的Pi近似值.
let pi = 3
let ADD = 1
let SUB = 2
let OP = ADD
for (let i = 2; i < 100000; i +=2 ){
if (OP == ADD) {
pi += 4 / (i * (i + 1) * (i + 2))
OP = SUB
} else {
pi -= 4 / (i * (i + 1) * (i + 2))
OP = ADD
}
}
console.log(pi)
local pi = 3
local ADD, SUB = 1, 2
local OP = ADD
for i = 2, 100000, 2 do
if OP == ADD then
pi = pi + 4 / (i * (i + 1) * (i + 2))
OP = SUB
else
pi = pi - 4 / (i * (i + 1) * (i + 2))
OP = ADD
end
end
print(pi)
#!/usr/bin/python3
pi = 3
ADD, SUB = 1, 2
OP = ADD
for i in range(2, 100000, 2):
if OP == ADD :
pi += 4 / (i * (i + 1) * (i + 2))
OP = SUB
else:
pi -= 4 / (i * (i + 1) * (i + 2))
OP = ADD
print(pi)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment