1、算法设计原理分析

利用周长为1的圆的周长为2Π,采用割圆术,从开始的正六边形(周长为6),循环切割求正12边形、正24边形……的边长(勾股定理),从而求出正多边形的周长,来近似求解出2Π的值。

整个算法采用循环,求解正多边形的边长à正多边形的周长à周长的一半。

2、程序设计

#include <stdio.h>

#include <math.h>

void pai(int n);

int main()

{

int n;

printf("Please enter the number of cuts:\nn = ");

scanf("%d",&n);

pai(n);

return 0;

}

void pai(int n)

{

int i=0,s=6;               //i表示切割次数;s表示边数

double k=3.0,len=1.0,h=0;    //k表示正多边形的周长,len表示正多边形的边长,h是求解边长时的中间变量

while(i<=n)

{

printf("The NO.%d cut is a regular %d sided shape,PI=%f\n",i,s,k);

h=1-sqrt(1-pow(len/2,2));

len=sqrt(pow(len/2,2)+pow(h,2));

i++;

s*=2;

k=s*len/2;

}

}

3、运行结果

4、算法分析(复杂度)

这是一个简单的单层循环算法,复杂度与切割次数n有关,所以复杂度为O(n)。

5、解题收获

通过对割圆术求圆周率算法的代码编写,回顾了割圆术的本质,其中的极限思想有助于算法学习、问题的解决。

萌新加入,欢迎各位作者交流!

求圆周率算法(割圆术)c语言实现相关推荐

  1. 割圆术c语言程序设计,c语言实现割圆术计算圆周率.pdf

    割圆术计算圆周率 "割圆术"是我国数学家刘徽创立的一种求圆周率的方法.思想是当圆的内 接正多边形的边数无限大时内接正多边形的面积就无限趋近于圆的面积,即所 谓 "割之弥细 ...

  2. 割圆术c语言程序设计,组图:千古绝技 中国古代数学家的割圆术

    ]"圜,一中同长也".意思是说:圆只有一个中心,圆周上每一点到中心的距离相等.早在我国先秦时期,<墨经>上就已经给出了圆的这个定义,而公元前11世纪,我国西周时期数学家 ...

  3. 用c语言编写的求圆周率的程序,【C语言程序设计】C语言求圆周率π(三种方法)...

    题目一: 利用公式①计求π的近似值,要求累加到最后一项小于10^(-6)为止. 程序代码: #include #include#include intmain(){float s=1;float pi ...

  4. 【Java】如何实现用割圆术求圆周率π

    割圆术由我国古代数学家刘徽首创,其为计算圆周率建立了严密的理论和完善的算法,所谓割圆术,就是不断倍增圆内接正多边形的边数求出圆周率的方法. 刘徽指出:"割之弥细,所失弥少,割之又割,以至于不 ...

  5. 求圆周率pi的怪异程序 祖冲之圆周率算法绝技之迷

    据说华罗庚曾讲过一个故事,说:有个教书先生喜欢喝酒,一天,他叫学生背圆周率,自己却提壶酒到山上庙里找老和尚喝酒去了.有个聪明的学生把圆周率编了个打油诗"山巅一寺一壶酒,尔乐苦煞吾,把酒吃:酒 ...

  6. 蒙特卡洛求圆周率c语言代码,蒙特卡洛法求圆周率

    利用蒙特卡洛算法求圆周率是一个概率的方法,关于这方面的内容很多,而且也很容易理解,更多具体分析过程可以参考如下文章: http://blog.csdn.net/zzhflyqh/article/det ...

  7. c语言程序π,C语言求圆周率π(三种方法)

    题目1) 利用公式①计求π的近似值,要求累加到最后一项小于10^(-6)为止. 题目2) 根据公式②,用前100项之积计算π的值. 题目1)提供了一种解法,题目2)提供了两种解法,请看解析. 题目1) ...

  8. c语言求圆周率 . 4,C语言求圆周率π(三种方法)(4页)-原创力文档

    C语言求圆周率π(三种方法) 题目1) 利用公式①计求π的近似值,要求累加到最后一项小于10^(-6)为止.题目2) 根据公式②,用前100项之积计算π的值.题目1)提供了一种解法,题目2)提供了两种 ...

  9. 【MPI OpenMP】并行蒙特卡洛方法求圆周率(C语言)

    本文记录了使用MPI与OpenMP两种并行计算方法实现蒙特卡洛计算圆周率,题目是专业实验课上老师给的,主要分享一下自己的做法,希望大家不吝赐教(使用的语言是C语言). 蒙特卡洛方法求圆周率 蒙特卡洛方 ...

最新文章

  1. Shell练习-统计出每个IP的访问量有多少?
  2. 用JS验证asp.net服务端控件
  3. 模拟三:STEMA 考试选择题模拟练习试卷(初级组)及答案 + 自我解题笔记
  4. vfp 右键发送邮件_邮件批量发送的方法教程
  5. Linux学习:gcc 编译其他常用参数
  6. (一)Hyperledger Fabric 1.1安装部署-基础环境搭建
  7. android onclick执行顺序,错误“无法执行android:onClick的方法”
  8. npm突然找不到D:\nodejs\node_modules\npm\bin\npm-cli.js的解决方法
  9. 基于CUDA的GPU优化建议
  10. JAVA 蔡羽 基础知识漫谈
  11. 第二课 做站群之前的准备工作
  12. 鸿蒙系统底部任务栏无响应,win10底部任务栏无响应两种修复方法
  13. 智能快递柜在小区的应用
  14. Adam,AdamW,LAMB优化器原理与代码
  15. hessian矩阵特征值
  16. PMP证书真的烂大街了?
  17. 简述对css盒子模型的理解_css 盒子模型理解
  18. U盘文件全部变成只读模式的解决办法
  19. 源生JS 之对象key值为数字时的取值及修改key值方法
  20. 学Python一定就要做程序员吗?

热门文章

  1. 贴片电阻上印字的含义
  2. 《人人都是产品经理》读书笔记 Part 1
  3. Spring4.x❶ 两大核心之IOC
  4. EXCEL追加Botton
  5. 进销存管理(FIFO,LIFO)
  6. DatePicker 日期控件,禁止选择当前之前(之后)时间
  7. win10电脑能上网但是图标显示未连接到网络的解决方法
  8. Part2:面向对象、原型链、函数、ES6基础语法
  9. USB无线网卡和PCI-E无线网卡
  10. 6.1 双循环与单循环求1到10的阶乘