게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
원주율을 계산해보자.
게시물ID : programmer_11362짧은주소 복사하기
작성자 : 또중복
추천 : 1
조회수 : 809회
댓글수 : 6개
등록시간 : 2015/06/17 16:18:12
옵션
  • 창작글
간단한 방법으로 원주율을 계산해봤습니다.
많이 알려진 방법이지만 직접 해보는 게 중요하니까요.

circle3.png

정의:
반지름 1인 원의 면적은 π.

방법:
위 그래프를 아주 작게, 가로 세로 n 개로 나눠서 원점(0,0)에서 거리가 1 미만이면 원에 포함 되는 것으로 한다.

double CalcPi (int n) { // n : 분할 개수
double dv, da, pi, x, y;
dv = 2.0 / n; // 나눈 점의 크기
da = dv * dv; // 나눈 점의 면적
pi = 0; // 원의 면적
for (x = -1; x < 1; x += dv) { // x 축으로 n 번
for (y = -1; y < 1; y += dv) { // y 축으로 n 번, 총 n*n 번 계산
if (x*x + y*y < 1) { // 원점에서 거리가 1 미만이면
pi += da; // 면적 추가
}
}
}
return pi;
}

결과:
10 개로 분할 (백 번 계산)
printf ( "π = %f\n", CalcPi (10) );
π = 3.000000
100 개로 분할 (만 번 계산)
printf ( "π = %f\n", CalcPi (100) );
π = 3.135600
1,000 개로 분할 (백만 번 계산)
printf ( "π = %f\n", CalcPi (1000) );
π = 3.141364
10,000 개로 분할 (일억 번 계산)
printf ( "π = %f\n", CalcPi (10000) );
π = 3.141587
100,000 개로 분할 (백억 번 계산)
printf ( "π = %f\n", CalcPi (100000) );
π = 3.141592

백억 번 계산하면 컴퓨터가 힘들어합니다.
4년 된 i5-2430M 노트북으로 24초 걸렸습니다. ^^;

출처 아르키메데스, 피타고라스
전체 추천리스트 보기
새로운 댓글이 없습니다.
새로운 댓글 확인하기
글쓰기
◀뒤로가기
PC버전
맨위로▲
공지 운영 자료창고 청소년보호