您当前的位置:首页 > 计算机 > 编程开发 > C语言

C语言循环控制程序举例

时间:01-03来源:作者:点击数:

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

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

#include <stdio.h>
#include <math.h>
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 <stdio.h>
#include <math.h>
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 <stdio.h>
#include <math.h>
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<math.h>
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");
}

方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门