c语言循环控制程序设计,C语言循环控制程序举例

  • Post author:
  • Post category:其他


【例6.10】用下面的公式求π:

9687d81ed875321a48f1306c047ac423.gif

分析:首先,系数为正数的项的分母是4n-3(n为正数项的项数),为负数的项的分母为4n-1(n为负数项的项数),即分母的变化规律是1、3、5、7…的奇数数列,则第n项的分母为2n-1,第10000项的分母为2*10000-1。

#include

#include

int main(void)

{

double p=0,j=1;

int i;

for( i=1;i<10000;i++ )  //此处i为项数

{

j=pow(-1.0,i+1)/(2*i-1);  //pow(x,y)求x的y次幂

p+=j;

printf(“%lf\n”,4*p);  //输出每一项的值

}

printf(“%lf\n”,4*p);  //输出最终pi值

return 0;

}

i 的值越大,结果越精准,同样计算时间也更长。

注意:经读者反馈,笔者意识到以前提供的例子是错的,上面是更改后的代码,更改时间为 2014-07-06  1:50:34;错误的例子就不提供了。

【例6-11】判断m是否素数。

#include

#include

int main(void){

int m,i,k;

printf(“Input your number: “);

scanf(“%d”,&m);

k=sqrt(m); // m 的开方

for(i=2;i<=k;i++)

if(m%i==0) break;

if(i>=k+1)

printf(“%d is a prime number\n”,m);

else

printf(“%d is not a prime number\n”,m);

return 0;

}

【例6-12】求100至200间的全部素数。

#include

#include

int main(void){

int m,i,k,n=0;

for(m=101;m<=200;m=m+2){

k=sqrt(m); // m 的开方

for(i=2;i<=k;i++)

if(m%i==0) break;

if(i>=k+1){

printf(“%d\n”,m);

n=n+1;

}

}

printf(“\n”);

return 0;

}

注意:经读者 @ahlei、@娄 @IKGROADS、@啊啊、@hi、@小姐” 的反馈,笔者意识到以前提供的例子让人费解,将代码做了修改,就是上面的代码,修改时间为 2014-07-06  02:05:251。

下面是老代码:

#include

main(){

int m,i,k,n=0;

for(m=101;m<=200;m=m+2){

k=sqrt(m);

for(i=2;i<=k;i++)

if(m%i==0)  break;

if(i>=k+1){

printf(“%d”,m);

n=n+1;

}

if(n%n==0)printf(“\n”);

}

printf(“\n”);

}