{
s+=x;
k+=2;
sign*=-1;
x=sign/(double)(k);/*強製類型轉換,使x得到浮點數值*/
}
s*=4;/*π值*/
printf("ThePIis:%108f",s);
}
運行結果為:
ThePIis:314159263
[例69]給定一個整數m,判斷其是否為素數。
分析:m是素數的條件是不能被2,3,…,m-1中的任何一個數整除。根據這一條件,可通過一個循環判斷該數是否為素數。
#include
voidmain()
{
longm,inti;
printf("Enteranumber:\n");
scanf("%ld",&m);
for(i=2;i=m。也就是說,如果m不是素數,一定能找到一個整數i能整除m,即m%i為0。於是,循環可以在2~m內進行。
改進後的算法可以寫成如下形式:
#include
#include
voidmain()
{
longm;inti;doublesqrtm;
printf("Enteranumber:\n");
scanf("%ld",&m);
sqrtm=sqrt(m);
for(i=2;i=3)
分析:這個數列如果用最直接的思考方法,最簡單的方式就是要求這個數列的前n項,就定義n個變量(或者是長度為n的數組),每一個變量對應數列中的一個數。但當n的值增大時,定義變量的工作將變得不可行。此時我們需要考慮將算法進行一定程度的優化。對於這個問題,我們可以發現,如果定義兩個變量f1、f2,當使用完它們的值之後,實際上這兩個變量便不再起作用。f3、f4的值便可以存儲在這兩個變量裏,後麵的f5、f6、…、f(n-1)、f(n)的值都能以此循環類推,可以用f1、f2這兩個變量進行存儲。下麵是具體代碼(假設問題為求數列的前20項):
#include
voidmain()
{
longf1=1,f2=1;/*用long避免數值越界*/
intn;
for(n=1;n