圆周率的现代计算机求法(C语言) Label:Research
C语言求圆周率π
公式法1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | #include <stdio.h> #include <math.h> int main(){ float term,result=1; int n; for (n=2;n<=100;n+=2){ term=( float )(n*n)/((n-1)*(n+1)); result*=term; } printf ( "pi的值为:%f\n" , 2*result); return 0; } |
pi的值为:3.141594上面的代码,先计算π/4的值,然后再乘以4,s=-s; 用的很巧妙,每次循环,取反,结果就是,这次是正号,下次就是负号,以此类推。
随机数法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | #include<stdio.h> #include<stdlib.h> int main(){ double x,y; int m=0,n=10000000,i; srand ( time (0)); for (i=0;i<n;i++){ x=( double ) rand ()/RAND_MAX; y=( double ) rand ()/RAND_MAX; if (x*x+y*y<1)m++; } printf ( "%lf\n" ,4.0*m/n); return 0; } |
800位精度
1 2 3 4 5 6 7 8 9 10 | #include<stdio.h> long a=10000,b,c=2800,d,e,f[2801],g; int main(){ for (;b-c;) f[b++]=a/5; for (;d=0,g=c*2;c-=14, printf ( "%.4d" ,e+d/a),e=d%a) for (b=c;d+=f[b]*a,f[b]=d%--g,d/=g--,--b;d*=b); scanf ( "%s" ); return 0; } |
这个比较出名的程序,三行语句求PI
按公式PI/2 = ∑ (n! / (2n+1)!!) 计算Pi
计算2800项就可以精确到小数点后800位
正常的写法是
123456789101112131415161718#include "stdio.h"
long
b,c,d,e,f[2801];
void
main(){
for
(
int
i = 0; i < 2800; i++) f[i] = 2000;
f[2800] = 0;
for
(c = 2800; c > 0; c -= 14) {
d = 0;
for
(b = c; b > 0; b--) {
d += f[b] * 10000;
f[b] = d % (2*b-1);
d /= (2*b-1);
if
(b > 1)
d *= (b-1);
}
printf
(
"%.4d"
, e + d / 10000);
e = d % 10000;
}
}
更多算法请参考https://www.guokr.com/blog/444081/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 3.0 许可协议。转载请注明出处!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
2016-11-11 NOIp #2011
2016-11-11 NOIp #2010
2016-11-11 NOIp #2009