scratch3.0编程用欧拉公式和蒙特卡洛实验求π值
探究π的道路上,有一位伟大的数学家欧拉(Leonhard Euler)值得大书特书。除了数学爱好者耳熟能详的著名的欧拉公式

欧拉公式
之外,还有在他 28 岁(1735年)的时候为解决当时难倒欧洲所有数学家的一个难题,为圆周率找到了下面这个更妙不可言的数学表示等式,

欧拉等式
并且由他开始使用希腊字母“π”表示圆周率。之后这个符号被欧洲数学家所接受,并一直沿用下来。后来更有数学家证明了,上面这个公式与一个概率值有密切关系,是不是很神奇?那就是任意给定两个正整数,它们互素(质)的概率就等于上面那个极限值的倒数即
这样,又给我们提供了一个用蒙特卡洛方法求π的近似值的思路。现在就用scratch3.0编程来模拟这个实验吧!
首先我们可以用递归的思路建立一个求最大公约数的自定义积木,供实验的时候使用。

求最大公约数的自定义积木
判断两个正整数是否互素(质),当且仅当最大公约数为1时互质,我们可以求比较大的范围的数来做实验,进行数量足够大的实验次数,把其中的互质的次数用计数变量统计下来,实验结束,把互质的累计数除以实验总次数,就是那个概率P,然后根据欧拉的公式和概率论的结论,把这个概率值乘以6,再开平方根,就是π的近似值了。
其中一次实验的结果是: