用c语言3种循环分别计算圆周率的值
时间: 2024-04-30 19:23:40 浏览: 78
方法一:蒙特卡罗方法
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
srand(time(NULL)); // 初始化随机数种子
int n = 1000000; // 投点次数
int count = 0; // 落在圆内的点数
double x, y;
for (int i = 0; i < n; i++)
{
x = rand() / (double)RAND_MAX; // 生成0-1之间的随机数
y = rand() / (double)RAND_MAX;
if (x * x + y * y <= 1) // 判断是否在圆内
count++;
}
double pi = 4 * (double)count / n; // 计算pi值
printf("pi = %lf\n", pi);
return 0;
}
```
方法二:牛顿-莱布尼茨公式
```c
#include <stdio.h>
int main()
{
int n = 1000000; // 求和次数
double pi = 0.0;
for (int i = 0; i < n; i++)
{
pi += 4.0 * (i % 2 == 0 ? 1 : -1) / (2 * i + 1); // 计算pi值
}
printf("pi = %lf\n", pi);
return 0;
}
```
方法三:梅钦公式
```c
#include <stdio.h>
#include <math.h>
int main()
{
int n = 1000000; // 求和次数
double pi = 0.0;
for (int i = 0; i < n; i++)
{
pi += 1.0 / pow(16, i) * (4.0 / (8 * i + 1) - 2.0 / (8 * i + 4) - 1.0 / (8 * i + 5) - 1.0 / (8 * i + 6)); // 计算pi值
}
printf("pi = %lf\n", pi);
return 0;
}
```
阅读全文