① 圆周率的快速记忆方法
背圆周率的口诀
3
.
1
4
1
5
9
2
6
5
3
5
8
9
7
9
3
2
3
8
4
6
2
6
山巅一寺一壶酒,尔乐苦煞吾,把酒吃,酒杀尔,杀不死,乐尔乐。
4
3
3
8
3
2
7
9
5
0
2
8
8
4
1
9
7
1
6
9
3
9
9
3
7
死珊珊,霸占二妻。
救吾灵儿吧!
不只要救妻,
一路救三舅,
救三妻。
5
1
0
5
8
2
0
9
7
4
9
4
4
5
9
2
3
0
7
吾一拎我爸,二拎舅(其实就是撕吾舅耳)三拎妻。
8
1
6
4
0
6
2
8
6
2
0
8
9
9
8
6
不要溜!司令溜,儿不溜!儿拎爸,久久不溜!
2
8
0
3
4
8
2
5
3
4
2
1
1
7
0
6
7
9
8
饿不拎,闪死爸,而吾真是饿矣!要吃人肉?吃酒吧!
(作者华罗庚)
来历:有个教书先生,喜欢喝酒,每次总是给学生留道题,就到私塾的后山上找山上的老和尚喝酒。这天,他给学生留了道题,就是背这个圆周率,然后自己提壶酒就到山上的庙里去了。圆周率位数这么多,不好背啊,其中有个聪明的学生就想出了一个办法,把圆周率编了个打油诗:山巅一寺一壶酒,尔乐苦煞吾,把酒吃;酒杀尔杀不死,乐尔乐。其实就是3.1415926535897932384626的谐音。先生一回来,学生居然都把这个给背了下来,很是奇怪,一想,就什么都明白了,原来是在讽刺他呀……
② 圆周率的规律
圆周率是超越数,不能满足任何整系数代数方程的实数,圆周率π=3.1415926535…,自然对数的底e=2.718281828…可以证明超越数有无穷个。圆周率不是代数数的数,它超越代数方法所及的范围之外。
圆周率的起源:
最先得出π≈3.14的是希腊的阿基米德(约公元前240年),最先给出π小数后面四位准确值的是希腊人托勒密(约公元前150年),最早算出π小数后七位准确值的是我国的祖冲之,1610年荷兰籍德数学家鲁道夫应用内接和外切正多边形计算π值,通过2边形计算π到35位小数,1630年格林贝格利用斯涅耳的改进方法计算π值到39位小数,这是利用古典方法计算π值的最重要尝试。
性质:
圆周率(Pi)是圆的周长与直径的比值,一般用希腊字母π表示,是一个在数学及物理学中普遍存在的数学常数。π也等于圆形之面积与半径平方之比。是精确计算圆周长、圆面积、球体积等几何形状的关键值。 在分析学里,π可以严格地定义为满足sinx= 0的最小正实数x。
圆周率用希腊字母π(读作pài)表示,是一个常数(约等于3.141592654),是代表圆周长和直径的比值。它是一个无理数,即无限不循环小数。
通常都用3.14代表圆周率去进行近似计算。而用十位小数3.141592654便足以应付一般计算。即使是工程师或物理学家要进行较精密的计算,充其量也只需取值至小数点后几百个位。
这个比较难懂,我补充个别人的解释吧————————————————————一、源程序
本文分析下面这个很流行的计算PI的小程序。下面这个程序初看起来似乎摸不到头脑,
不过不用担心,当你读完本文的时候就能够基本读懂它了。
程序一:很牛的计算Pi的程序
int
a=10000,b,c=2800,d,e,f[2801],g;
main()
{
for(;b-c;)
f[b++]=a/5;
for(;d=0,g=c*2;c
-=14,printf("%.4d",e+d/a),e=d%a)
for(b=c;
d+=f*a,f=d%--g,d/=g--,--b;
d*=b);
}
二、数学公式
数学家们研究了数不清的方法来计算PI,这个程序所用的公式如下:
1
2
3
k
pi
=
2
+
---
*
(2
+
---
*
(2
+
---
*
(2
+
...
(2
+
----
*
(2
+
...
))...)))
3
5
7
2k+1
至于这个公式为什么能够计算出PI,已经超出了本文的能力范围。
下面要做的事情就是要分析清楚程序是如何实现这个公式的。
我们先来验证一下这个公式:
程序二:Pi公式验证程序
#include
"stdio.h"
void
main()
{
float
pi=2;
int
i;
for(i=100;i>=1;i--)
pi=pi*(float)i/(2*i+1)+2;
printf("%fn",pi);
getchar();
}
上面这个程序的结果是3.141593。
三、程序展开
在正式分析程序之前,我们需要对程序一进行一下展开。我们可以看出程序一都是使用
for循环来完成计算的,这样做虽然可以使得程序短小,但是却很难读懂。根据for循环
的运行顺序,我们可以把它展开为如下while循环的程序:
程序三:for转换为while之后的程序
int
a=10000,b,c=2800,d,e,f[2801],g;
main()
{
int
i;
for(i=0;i