當前位置:首頁 » 編程軟體 » 編程體脂率

編程體脂率

發布時間: 2022-04-04 04:27:23

A. 編寫Java程序,根據給定的身高和體重計算肥胖指數BMI,並輸出相應的健康標准。BMI計算公式為:

MI計算公式為:

public double getBMI(double weight,double height){

return weight/(height*height);

}

public static void main(String[] arrs){

Scanner scanner=new Scanner(System.in);

System.out.println("請輸入體重");

double weight=scanner.nextDouble();

System.out.println("請輸入身高");

double height=scanner.nextDouble();

getBMI(weight,height);

}

相信很多人都有這樣一種感覺:為什麼相同身高相同體重的兩個人,有人看起來瘦,有人看起來胖,或者是減肥的時候,明明體重沒有下降,甚至還上升了,但是看起來卻瘦下來了。

其實,這其中就是體脂率在起作用。有人過分追求減肥時的體重快速下降,但其實如果體脂率沒小,只是體重下去了,也是虛的。

只有當體脂率變小,腰圍等才會變小,視覺上才會看起來「瘦」,這體脂率,指的就是脂肪的重要佔總體重的比例,當體脂率低,意味著身體的脂肪含量少,即使是相同體重的人,看起來也會比較瘦,這就是體脂率的意義。

如果按照概念來看,體脂率的計算公式就是:體脂率=(脂肪重量 ÷ 體重)×100%,通用的體脂率計算公式為:體脂率 =1.2×BMI+0.23× 年齡-5.4-10.8×性別(男為1,女為0),其中BM指的是體重指數,用體重除以身高的平方即可得到。

因此,按照公式就可以計算出自己的體脂率了,如此一來,就可以知道自己是「胖」還是「瘦」。有人就會提出疑問,是不是體脂率越低越好呢?當然不是。

B. C語言編程問題。

1.編程在一個已知字元串中查找最長單詞,假定字元串中只含有字母和空格,空格用來分割不同單詞!

方法一:

//VC++ 6.0 編譯通過

#include
void main()
{
char str[]="hello world my name is xun yi cao !!";
char*p=str,*p1;
int max=0,count=0,i;
while(*p)
{
count=0;
while(*p==' ')p++;
while(*p!=' '&&*p)
{//一定要注意這里的判斷 *p!=0 也要判斷,不然到了最後一個單詞時,它一直向後面加,直到碰見空格,所以會超界。
p++;
count++;
}
if(max<count)
{
max=count;
p1=p-count;
}
}
printf("the largest number is :%d \n",max);
printf("the largest word is : ");
while(*p1!=' '&&*p1) //這里也要判斷*p1!='\0',因為如果最長的單詞在字元串的末尾的話,如果不判斷*p1!='\0',也會過界。
{
putchar(*p1);
p1++;
}
putchar('\n');
}

/*
求字元串中最長的單詞。要注意的是:如果在一個循環A 裡面還有循環B 的話。那麼不僅在循環B裡面要保證,數組不過界。
而且要要保證在循環A裡面數組也不過界。就像上面的例子一樣。現給出一個更容易理解的例子。
while(*p)
{
while(*p!=' '&&*p)
{
p++;
}
}
雖然外循環和內循環在循環條件上沒有什麼必然的聯系,但是對於一個數組的指針而言(如果以變數下標的
形式來訪問數組的話,下標的加減也要引起注意),它的加減也要引起注意,必須要保證不能過界。
*/

方法二:

//VC++ 6.0 編譯通過。

#include
#include
void main()
{
char str[]=" I am a student";
char*p=str,Array[10][20]={0};
int i=0,j=0,max=0;
while(*p)
{
while(*p==' ')*p++;
while(*p&&*p!=' ')
{
Array[i][j++]=*p;
p++;
}
i++;j=0;
}
i=0;
max=strlen(Array[i]);
p=Array[i];
while(strlen(Array[i]))
{
if(max<strlen(Array[i]))
{
max=strlen(Array[i]);
p=Array[i];
}
i++;
}
printf("%d\n%s\n",max,p);
}

/*
求字元串中最長的單詞(不能分辨含非字母字元的單詞),採用的是二維數組的形式判斷的。
定義了一個二維數組,它的每一個元素用來存放一個字元串(每個被分離後的單詞)。
再判斷最長的那個。

這中方法對比第一種方法來說,思路更清晰一些。但是缺點就是要分配一個二維的數組來存放被分離後的每個
單詞,佔用存儲空間。
*/

2.編寫實現任意十進制數,轉換成r進制數(r在2到16之間)

轉換為二進制:

//VC++ 6.0編譯通過

#include
#include
void main()
{
int a,b[30],i;
scanf("%d",&a);
for(i=0;a!=0;i++)
{
b[i]=a%2;
a=a/2;
}
for(--i;i>=0;i--)
{
printf("%d",b[i]);
}
putchar('\n');
}

//關於二進制的轉換,還可以用位移運算符。通過和某一個數如1相按位與,就得到它的二進
制最低位,在位移,再得到二進制最低位,依此類推。

轉換為8進制:

/VC++ 6.0編譯通過。

#include
#include
void main()
{
int a,b[20],i;
scanf("%d",&a);
for(i=0;a!=0;i++)
{
b[i]=a%8;
a=a/8;
}
for(--i;i>=0;i--)
{
printf("%d",b[i]);
}
putchar('\n');
}

/*
轉換為8進制就沒有16進制那麼麻煩了,它不需要另外定義一個字元數組用來存放,進制的
所有基數了,而是直接輸出來就可以了。而對與16進制還要存放他的基數。從0到F
*/

轉換為16進制:

//VC++ 6.0 下編譯通過

#include
#include
void main()
{
int a,b[20],i,base=16;
char X[16]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
scanf("%d",&a);
for(i=0;a!=0;i++)
{
b[i]=a%base;
a=a/base;
}
for(--i;i>=0;i--) //開始有一個 --i
{
int j=b[i];
printf("%c",X[j]);
}
printf("\n");
}

/*
一般把其它進制的數轉換為十進制的數較容易,有一個現成的乘法公式供我們使用。
但把十進制的數轉換為其它進制的數,則要用到除法。這題的思路是比較清晰的,應該是
解決這類問題的典型演算法了。

而對於把十進制的數轉換為二進制的數來說,除了用到除法外,還可用位運算。

這個問題主要是這兩句話值得理解:

b[i]=a%base;
a=a/base;
我們一般是用這兩句循環使用來得到一個整數的各位的數字,這也恰巧說明了,我們得到
一個整數的各個位數所用到的方法,正是把一個十進制的數轉換為一個 "十進制" 數的演算法
也就是我們得到一個十進制數的各個位的數字的過程,實際上就是求把他轉換為一個十進制
的數字的過程(雖然這里本身沒必要在轉換,因為本身它就已經是一個十進制數了)。用同樣
的道理可以推算把十進制數轉換為其他進制數的過程,和這個是類似的。

然後將後得到的結果先輸出,而先取余數得到的結果則在數字的最後面,在低位。

*/

通用解決方案:

#include
#include
void main()
{
int a[10]={0,1,2,9,10,5,12,7,8,15};
for(int i=9;i>=0;i--)
{
if(a[i]>=10)
switch(a[i])
{
case 10: printf("%c",'A');break;
case 11: printf("%c",'B');break;
case 12: printf("%c",'C');break;
case 13: printf("%c",'D');break;
case 14: printf("%c",'E');break;
case 15: printf("%c",'F');break;
}
else
printf("%d",a[i]);
}
}

/*
其實進制轉換的演算法我們都知道,就是用我們要轉換的那個數,對進制的基數(如果是16進制)
進行取余,把取余的結果保存在一個數組裡面,再對他取整重新賦值,也就是丟掉余數部分,
相當於取上一步的商,再取余,再取整。如此循環,直到為0。

其實上面的演算法,只要我們想起把一個十進制的數轉換為二進制的數的計算方法,就不難理解,
因為都是相通的。

現在關鍵是,如果我的這些事情都做好了,也就是余數都放在一個數組里了,現在要做的就是
把數組逆序輸出就ok了。那麼如果是二進制或八進制,我們只要直接輸出就可以了,但是如果是
一個十六進制的話,就不能這樣了,也就是如果數組裡面有一個元素是14,那麼我就不能原樣輸出
了,此時必須輸出E,因為E就是十六進制裡面的基數,而且也是與十進制的14相對應的。但是如果
是一個二進制或者是一個八進制的話,就可以直接輸出,因為數組裡面的數都是0,1(對二進制)
或者(0....8),這些數就是二進制和八進制的基數。

所以這里要面臨的問題就是,在輸出一個整數的時候,如果這個整數滿足某一條件,就輸出什麼字
符的問題,例如:如果這個整數等於14則輸出'E'字元。

當然我們可以用 if..else 語句來判斷,對於十六進制的數特殊的字元也就只有A,B,C,D,E,F六個
用 if...else 來判斷也不算太煩瑣。當然我們還可以用 switch 來判斷,這樣更加有條理。代碼
也更清晰。

當然這是對於16進制的數來說的,我們可以這樣判斷,但是如果實際生活中遇到的問題和這個有點
類似,而且字母有多的話,用條件判斷或switch就太煩瑣了,代碼也不直觀,還容易出錯。

那麼這時我們可以在定義一個字元數組,分別放我們要輸出的字元,如果有以下對應的關系:

10 A
11 B
12 C
13 D
14 E
15 F
16 G
17 H
18 I
19 J

也就是說在數組a裡面放的是數字,在數組b裡面放的是字元,要求數組a裡面的數字是10的時候,輸
出'A',而不是輸出10,依次類推(看上面的對應關系),當然我上面的對應關系都是順序的,其實也
可以不是順序的,對於數字和字元都可以是亂的,當然這要看實際遇到的問題是什麼樣的了。如果
對上面的問題還用if...else來判斷的話,那未免太煩瑣。所以我們定義一個字元數組來專門存放
字元。那麼怎麼讓數字和字元聯系起來呢,怎麼讓a[i]的值是10的時候就輸出'A'而是14的時候就輸
出'E'呢,在這里我們可以這樣定義b數組:

char b[30]={0};
b[10]='A';
b[11]='B';
b[12]='C';
b[13]='D';
b[14]='E';
...
b[19]='J';

這樣也就是說當a[i]元素的值是10時,就輸出b[10],是11就輸出b[11];這樣就和數字對應起來
了。我們可以這樣用:

int t=a[i];
printf("%c",b[t]); a[i]的值是多少,我們就輸出b[多少]

但對於上面舉的例子來說,可以這樣:

if(a[i]>=10&&a[i]<=19) //對應關系是連續的,才可以這樣判斷
{
int t=a[i];
printf("%c",b[t]);
}
else
{
printf("%d",a[i]);//如果不屬於定義的對應的特殊字元,就原樣輸出。
}

當然了,上面的是對應的連續的情況,對與10進制與二進制,8進制,16進制之間的轉換,都是連續的情況。
如果對應的是不連續的情況,那有該怎麼辦呢:

20 'A'
25 'B'
30 'D'
50 'G'
53 'H'
58 'C'
100 'Z'
200 'W'

對於上面的情況,是一點規律性也沒有的,而且如果為了這幾個數就去定義一個200個元素的數組,實在是
有點劃不來。所以如果是上面這種情況,就沒有比較好的辦法了。只用用判斷語句了,當然如果有20多個
字元的對應關系的話,判斷語句也是不合適的,那麼就沒有比較好的辦法了。還要進一步探索....

*/

這些都是我在考計算機等級考試碰到過的題目哦,演算法都是相當典型的,有的是書上看到的,有的是自己擴展的。還是要自己認真哦。。。

由於文字太多第三題提交不上來了哦。。不好意思。。。

C. 圓周率是怎樣算出來的

祖沖之和圓周率

月球背面有一座環形山,被稱為「祖沖之環形山」,它是以最早精確地計算出圓周率的中國科學家祖沖之的名字命名的。

祖沖之(公元429-500年),中國南北朝時著名的數學家、天文學家和機械製造家。他從小聰明好學,愛好自然科學、文學和哲學,經過刻苦的學習和鑽研,他終於成為了一位享譽世界的科學家。

祖沖之在數學方面的成就是震驚世界的。遠在一千五百年以前,祖沖之就計算出了准確的圓周率。求算圓周率的值是數學中一個非學重要也是非常困難的研究課題。中國古代許多數學家都為研究這個課題付出了心血,並取得了喜人的成果。祖沖之在前人研究的基礎上,繼續進行了深入而系統的研究,經過一千次以上的計算,他計算出圓周率在3.1415926和3.1415927之間,成為世界上最早把圓周率推算出七位數字的科學家。祖沖之還提出圓周率的近似值為355/113,稱為「密率」,把數學中關於圓周率的計算推進到一個新階段,成為當時世界上最精確的圓周率。日本數學家稱它為「祖率」。直到一千年以後,西方的數學家才達到和超過了祖沖之的成就。

祖沖之是一位博學多才的科學家,除了數學以外,對於天文歷法和各種機械也有研究。他曾經設計和製造了計時用的漏壺,還有指南車、水推磨和千里船等。祖沖之的巨大成就,使他成為一位世界知名的科學家。

D. 圓周率到底怎麼算啊

周率是數學上常用到的一個值....,約等於3.142592625.

E. 本人想練腹肌,120斤,身高一米75,有點肚子,不是很大,本人每天做俯卧撐100個,

按照下面方法練,大概3個月會有明顯效果。自己別瞎琢磨。
鍛煉腹肌只需要一兩個動作就足夠了。練腹肌的關鍵在於動作的強度,而不是次數越多越好。比如仰卧起坐能一次性做200個,也不如你兩頭起只能做10個的效果好。因為能做200個以上是練耐力,對肌纖維增粗不明顯。健美理論中用RM表示某個負荷量能連續做的最高重復次數。比如,練習者對一個重量只能連續舉起5次,則該重量就是5RM。6-10RM的負荷訓練能使肌肉粗大,力量速度提高,但耐力增長不明顯。
給你四個個動作:仰卧起坐、仰卧舉腿、兩頭起、懸垂舉腿(強度依次增加)。如果仰卧起坐可以做10到20個,那麼就做仰卧舉腿;仰卧舉腿能做10到20個,就做兩頭起。以此類推。一周練三次,每次一個動作練3組左右即可。
另外,體脂率高於百分之十以上脂肪就會蓋住練出的腹肌。相撲運動沒有肌肉就是因為如此。如果樓主有小肚子的話,還需要慢跑40分鍾左右減脂。一周3到5次左右。如果無法一次性跑40分鍾,中間可以快走一段時間。

F. 圓周率是怎樣計算出的、

圓周率是怎樣計算的
一、歷史
祖沖之與圓周率
古今中外,許多人致力於圓周率的研究與計算。為了計算出圓周率的越來越好的近似值,一代代的數學家為這個神秘的數貢獻了無數的時間與心血。 十九世紀前,圓周率的計算進展相當緩慢,十九世紀後,計算圓周率的世界紀錄頻頻創新。整個十九世紀,可以說是圓周率的手工計算量最大的世紀。 進入二十世紀,隨著計算機的發明,圓周率的計算有了突飛猛進。藉助於超級計算機,人們已經得到了圓周率的2061億位精度。 歷史上最馬拉松式的計算,其一是德國的Ludolph Van Ceulen,他幾乎耗盡了一生的時間,計算到圓的內接正262邊形,於1609年得到了圓周率的35位精度值,以至於圓周率在德國被稱為Ludolph數;其二是英國的威廉·山克斯,他耗費了15年的光陰,在1874年算出了圓周率的小數點後707位,並將其刻在了墓碑上作為一生的榮譽。可惜,後人發現,他從第528位開始就算錯了。 把圓周率的數值算得這么精確,實際意義並不大。現代科技領域使用的圓周率值,有十幾位已經足夠了。如果用魯道夫算出的35位精度的圓周率值,來計算一個能把太陽系包起來的一個圓的周長,誤差還不到質子直徑的百萬分之一。以前的人計算圓周率,是要探究圓周率是否循環小數。自從1761年蘭伯特證明了圓周率是無理數,1882年林德曼證明了圓周率是超越數後,圓周率的神秘面紗就被揭開了。 現在的人計算圓周率,多數是為了驗證計算機的計算能力,還有,就是為了興趣。
二、計算方法
圓周率
古人計算圓周率,一般是用割圓法。即用圓的內接或外切正多邊形來逼近圓的周長。阿基米德用正96邊形得到圓周率小數點後3位的精度;劉徽用正3072邊形得到5位精度;魯道夫用正262邊形得到了35位精度。這種基於幾何的演算法計算量大,速度慢,吃力不討好。隨著數學的發展,數學家們在進行數學研究時有意無意地發現了許多計算圓周率的公式。下面挑選一些經典的常用公式加以介紹。除了這些經典公式外,還有很多其它公式和由這些經典公式衍生出來的公式,就不一一列舉了。 1、馬青公式 π=16arctan1/5-4arctan1/239 這個公式由英國天文學教授約翰·馬青於1706年發現。他利用這個公式計算到了100位的圓周率。馬青公式每計算一項可以得到1.4位的十進制精度。因為它的計算過程中被乘數和被除數都不大於長整數,所以可以很容易地在計算機上編程實現。 還有很多類似於馬青公式的反正切公式。在所有這些公式中,馬青公式似乎是最快的了。雖然如此,如果要計算更多的位數,比如幾千萬位,馬青公式就力不從心了。 2、拉馬努金公式 1914年,印度天才數學家拉馬努金在他的論文里發表了一系列共14條圓周率的計算公式。這個公式每計算一項可以得到8位的十進制精度。1985年Gosper用這個公式計算到了圓周率的17,500,000位。 1989年,大衛·丘德諾夫斯基和格雷高里·丘德諾夫斯基兄弟將拉馬努金公式改良,這個公式被稱為丘德諾夫斯基公式,每計算一項可以得到15位的十進制精度。1994年丘德諾夫斯基兄弟利用這個公式計算到了4,044,000,000位。丘德諾夫斯基公式的另一個更方便於計算機編程的形式是: 3、AGM(Arithmetic-Geometric Mean)演算法 高斯-勒讓德公式: 圓周率
這個公式每迭代一次將得到雙倍的十進制精度,比如要計算100萬位,迭代20次就夠了。1999年9月,日本的高橋大介和金田康正用這個演算法計算到了圓周率的206,158,430,000位,創出新的世界紀錄。 4、波爾文四次迭代式: 這個公式由喬納森·波爾文和彼得·波爾文於1985年發表的。 5、ley-borwein-plouffe演算法 這個公式簡稱BBP公式,由David Bailey, Peter Borwein和Simon Plouffe於1995年共同發 丘德諾夫斯基公式
表。它打破了傳統的圓周率的演算法,可以計算圓周率的任意第n位,而不用計算前面的n-1位。這為圓周率的分布式計算提供了可行性。 6.丘德諾夫斯基公式 這是由丘德諾夫斯基兄弟發現的,十分適合計算機編程,是目前計算機使用較快的一個公式。以下是這個公式的一個簡化版本: 7.萊布尼茨公式 π/4=1-1/3+1/5-1/7+1/9-1/11+……

G. 用C語言編寫程序:輸入體重和身高,輸出體重指數BMI

例子如下:

知識擴展:

BMI指數(即身體質量指數,簡稱體質指數又稱體重,英文為Body Mass Index,簡稱BMI),是用體重公斤數除以身高米數平方得出的數字,是目前國際上常用的衡量人體胖瘦程度以及是否健康的一個標准。主要用於統計用途,當我們需要比較及分析一個人的體重對於不同高度的人所帶來的健康影響時,BMI值是一個中立而可靠的指標。

BMI值原來的設計是一個用於公眾健康研究的統計工具。當我們需要知道肥胖是否對某一疾病的致病原因時,我們可以把病人的身高及體重換算成BMI值,再找出其數值及病發率是否有線性關聯。不過,隨著科技進步,現時BMI值只是一個參考值。要真正量度病人是否肥胖,還需要利用微電力量度病人的阻抗,以推斷病者的脂肪厚度。因此,BMI的角色也慢慢改變,從醫學上的用途,變為一般大眾的纖體指標。

H. 圓周率是怎樣算出來的

【圓周率的計算】
古今中外,許多人致力於圓周率的研究與計算。為了計算出圓周率的越來越好的近似值,一代代的數學家為這個神秘的數貢獻了無數的時間與心血。
十九世紀前,圓周率的計算進展相當緩慢,十九世紀後,計算圓周率的世界紀錄頻頻創新。整個十九世紀,可以說是圓周率的手工計算量最大的世紀。
進入二十世紀,隨著計算機的發明,圓周率的計算有了突飛猛進。藉助於超級計算機,人們已經得到了圓周率的2061億位精度。
歷史上最馬拉松式的計算,其一是德國的Ludolph Van Ceulen,他幾乎耗盡了一生的時間,計算到圓的內接正262邊形,於1609年得到了圓周率的35位精度值,以至於圓周率在德國被稱為Ludolph數;其二是英國的威廉·山克斯,他耗費了15年的光陰,在1874年算出了圓周率的小數點後707位,並將其刻在了墓碑上作為一生的榮譽。可惜,後人發現,他從第528位開始就算錯了。
把圓周率的數值算得這么精確,實際意義並不大。現代科技領域使用的圓周率值,有十幾位已經足夠了。如果用魯道夫算出的35位精度的圓周率值,來計算一個能把太陽系包起來的一個圓的周長,誤差還不到質子直徑的百萬分之一。以前的人計算圓周率,是要探究圓周率是否循環小數。自從1761年蘭伯特證明了圓周率是無理數,1882年林德曼證明了圓周率是超越數後,圓周率的神秘面紗就被揭開了。
現在的人計算圓周率, 多數是為了驗證計算機的計算能力,還有,就是為了興趣。
[編輯本段]【圓周率的計算方法】
古人計算圓周率,一般是用割圓法。即用圓的內接或外切正多邊形來逼近圓的周長。阿基米德用正96邊形得到圓周率小數點後3位的精度;劉徽用正3072邊形得到5位精度;魯道夫用正262邊形得到了35位精度。這種基於幾何的演算法計算量大,速度慢,吃力不討好。隨著數學的發展,數學家們在進行數學研究時有意無意地發現了許多計算圓周率的公式。下面挑選一些經典的常用公式加以介紹。除了這些經典公式外,還有很多其它公式和由這些經典公式衍生出來的公式,就不一一列舉了。
1、馬青公式
π=16arctan1/5-4arctan1/239
這個公式由英國天文學教授約翰·馬青於1706年發現。他利用這個公式計算到了100位的圓周率。馬青公式每計算一項可以得到1.4位的十進制精度。因為它的計算過程中被乘數和被除數都不大於長整數,所以可以很容易地在計算機上編程實現。
還有很多類似於馬青公式的反正切公式。在所有這些公式中,馬青公式似乎是最快的了。雖然如此,如果要計算更多的位數,比如幾千萬位,馬青公式就力不從心了。
2、拉馬努金公式
1914年,印度天才數學家拉馬努金在他的論文里發表了一系列共14條圓周率的計算公式。這個公式每計算一項可以得到8位的十進制精度。1985年Gosper用這個公式計算到了圓周率的17,500,000位。
1989年,大衛·丘德諾夫斯基和格雷高里·丘德諾夫斯基兄弟將拉馬努金公式改良,這個公式被稱為丘德諾夫斯基公式,每計算一項可以得到15位的十進制精度。1994年丘德諾夫斯基兄弟利用這個公式計算到了4,044,000,000位。丘德諾夫斯基公式的另一個更方便於計算機編程的形式是:
3、AGM(Arithmetic-Geometric Mean)演算法
高斯-勒讓德公式:
這個公式每迭代一次將得到雙倍的十進制精度,比如要計算100萬位,迭代20次就夠了。1999年9月,日本的高橋大介和金田康正用這個演算法計算到了圓周率的206,158,430,000位,創出新的世界紀錄。
4、波爾文四次迭代式:
這個公式由喬納森·波爾文和彼得·波爾文於1985年發表,它四次收斂於圓周率。
5、ley-borwein-plouffe演算法
這個公式簡稱BBP公式,由David Bailey, Peter Borwein和Simon Plouffe於1995年共同發表。它打破了傳統的圓周率的演算法,可以計算圓周率的任意第n位,而不用計算前面的n-1位。這為圓周率的分布式計算提供了可行性。
6、丘德諾夫斯基公式
這是由丘德諾夫斯基兄弟發現的,十分適合計算機編程,是目前計算機使用較快的一個公式。以下是這個公式的一個簡化版本:
丘德諾夫斯基公式

I. 圓周率是怎麼計算出來的

古人計算圓周率,一般是用割圓法。即用圓的內接或外切正多邊形來逼近圓的周長。阿基米德用正96邊形得到圓周率小數點後3位的精度;劉徽用正3072邊形得到5位精度;魯道夫用正262邊形得到了35位精度。這種基於幾何的演算法計算量大,速度慢,吃力不討好。隨著數學的發展,數學家們在進行數學研究時有意無意地發現了許多計算圓周率的公式。下面挑選一些經典的常用公式加以介紹。除了這些經典公式外,還有很多其它公式和由這些經典公式衍生出來的公式,就不一一列舉了。

1、馬青公式

π=16arctan1/5-4arctan1/239

這個公式由英國天文學教授約翰·馬青於1706年發現。他利用這個公式計算到了100位的圓周率。馬青公式每計算一項可以得到1.4位的十進制精度。因為它的計算過程中被乘數和被除數都不大於長整數,所以可以很容易地在計算機上編程實現。

還有很多類似於馬青公式的反正切公式。在所有這些公式中,馬青公式似乎是最快的了。雖然如此,如果要計算更多的位數,比如幾千萬位,馬青公式就力不從心了。

2、拉馬努金公式

1914年,印度天才數學家拉馬努金在他的論文里發表了一系列共14條圓周率的計算公式。這個公式每計算一項可以得到8位的十進制精度。1985年Gosper用這個公式計算到了圓周率的17,500,000位。

1989年,大衛·丘德諾夫斯基和格雷高里·丘德諾夫斯基兄弟將拉馬努金公式改良,這個公式被稱為丘德諾夫斯基公式,每計算一項可以得到15位的十進制精度。1994年丘德諾夫斯基兄弟利用這個公式計算到了4,044,000,000位。丘德諾夫斯基公式的另一個更方便於計算機編程的形式是:

3、AGM(Arithmetic-GeometricMean)演算法

高斯-勒讓德公式:

這個公式每迭代一次將得到雙倍的十進制精度,比如要計算100萬位,迭代20次就夠了。1999年9月,日本的高橋大介和金田康正用這個演算法計算到了圓周率的206,158,430,000位,創出新的世界紀錄。

4、波爾文四次迭代式:

這個公式由喬納森·波爾文和彼得·波爾文於1985年發表的。

5、ley-borwein-plouffe演算法

這個公式簡稱BBP公式,由DavidBailey,PeterBorwein和SimonPlouffe於1995年共同發表。它打破了傳統的圓周率的演算法,可以計算圓周率的任意第n位,而不用計算前面的n-1位。這為圓周率的分布式計算提供了可行性。

6、丘德諾夫斯基公式

這是由丘德諾夫斯基兄弟發現的,十分適合計算機編程,是目前計算機使用較快的一個公式。以下是這個公式的一個簡化版本:

丘德諾夫斯基公式

J. 圓周率怎麼算出來的

圓周率是用圓的周長除以它的直徑計算出來的。

π是個無理數,即不可表達成兩個整數之比,是由瑞士科學家約翰·海因里希·蘭伯特於1761年證明的。 1882年,林德曼(Ferdinand von Lindemann)更證明了π是超越數,即π不可能是任何整系數多項式的根。

圓周率的超越性否定了化圓為方這古老尺規作圖問題的可能性,因所有尺規作圖只能得出代數數,而超越數不是代數數。

(10)編程體脂率擴展閱讀

2011年,國際數學協會正式宣布,將每年的3月14日設為國際數學節,來源則是中國古代數學家祖沖之的圓周率。

國際圓周率日可以追溯至1988年3月14日,舊金山科學博物館的物理學家Larry Shaw,他組織博物館的員工和參與者圍繞博物館紀念碑做3又1/7圈(22/7,π的近似值之一)的圓周運動,並一起吃水果派。之後,舊金山科學博物館繼承了這個傳統,在每年的這一天都舉辦慶祝活動。

2009年,美國眾議院正式通過一項無約束力決議,將每年的3月14日設定為「圓周率日」。

決議認為,「鑒於數學和自然科學是教育當中有趣而不可或缺的一部分,而學習有關π的知識是一教孩子幾何、吸引他們學習自然科學和數學的迷人方式……π約等於3.14,因此3月14日是紀念圓周率日最合適的日子。」

熱點內容
獲取文件夾文件名 發布:2024-04-19 14:45:51 瀏覽:247
嗶咔本地緩存怎麼看 發布:2024-04-19 14:36:00 瀏覽:105
linux的alarm 發布:2024-04-19 14:26:22 瀏覽:333
松江麻將源碼 發布:2024-04-19 14:06:06 瀏覽:958
明日之後怎麼實名認證安卓 發布:2024-04-19 13:35:55 瀏覽:936
數據加密解密演算法 發布:2024-04-19 13:25:52 瀏覽:945
安卓平板存儲空間不知道用在哪裡 發布:2024-04-19 12:58:57 瀏覽:765
出售lol腳本防封判幾年 發布:2024-04-19 12:45:14 瀏覽:188
安卓電視會員和平板哪個好 發布:2024-04-19 12:42:48 瀏覽:835
雲伺服器2m寬是多少 發布:2024-04-19 11:56:36 瀏覽:728