OpenVINOTM,给你看得见的未来!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » 8.程序设计举例

共2条 1/1 1 跳转至

8.程序设计举例

高工
2014-10-28 10:11:35    评分

  【例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");
}





助工
2014-12-14 20:32:31    评分
2楼
很好的例子

共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]