对于正整数n,在原点为圆心的一个半径n的圆盘内(包括圆周内的点)的整数格子点的个数设为C(n),n →∞的时候C(n) / n2接近圆周率。
基于这个求圆周率的近似值
输入一个n,C(n) / n2做为double型输出,C(n)为long型
【入力】
正整数 n 1つ。
【出力】
n と C(n) / n2 とを,書式を "%d:%.15f\n" として書き出せ。
【例】
输入例
1000
输出例
1000:3.141549000000000
int n,x,y;
long count;
double pi;
printf("请输入一个整数\n");
scanf("%d",&n);
for(x=-n,count=0;x<n;x++)
for(y=-n;y<n;y++)
if((x*x+y*y)<n*n)
count++;
pi=count/(double)n/(double)n;
printf("圆周率为%lf",pi);
http://blog.csdn.net/augusdi/article/details/12438159
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
int main()
{
const int MAX_TIMES = 200000000;
srand(static_cast<unsigned int>(time(0)));
int inside = 0;
for(int i = 0; i < MAX_TIMES; ++i) {
double x = static_cast<double>(rand()) / RAND_MAX;
double y = static_cast<double>(rand()) / RAND_MAX;
if(x * x + y * y <= 1.0) ++inside;
if(i % (MAX_TIMES / 100) == 0) cout << '.';
}
double pi = 4.0 * inside / MAX_TIMES;
cout << "/nPI = " << pi << endl;
return 0;
}
int n,x,y;
long count;
double pi;
printf("请输入一个整数\n");
scanf("%d",&n);
for(x=-n,count=0;x<n;x++)
for(y=-n;y<n;y++)
count++;
pi=count/(double)n/(double)n;
printf("圆周率为%lf",pi);
结果并不是很精确