문제 14 · 바젤 급수로 π 근사
문제 14 [3점]
아래 원주율
cpp
cout << "정수 n을 입력하세요: ";
int n;
cin >> n;
double sum = 0.0;
// 오일러 급수 표현, 빈칸을 채우세요.
for (int i = 1; i <= n; i++) {
/* 각 항을 합산합니다.
빈칸 1
*/
}
/* 급수를 바탕으로 π 값을 계산합니다.
빈칸 2
*/풀이 및 해설
이 급수는 바젤 문제Basel problem의 결과로, 제곱수 역수의 합이 다음과 같이 알려져 있습니다.
양변을 정리하면
- 빈칸 1 — 각 항
을sum에 누적. 정수 나눗셈을 피하려고 분자를1.0(실수)으로 둡니다.
cpp
sum += 1.0 / (static_cast<double>(i) * i); // = 1 / i^2- 빈칸 2 — 누적된 합에 6을 곱하고 제곱근을 취해 π를 계산·출력.
sqrt를 쓰려면<cmath>가 필요합니다.
cpp
double pi = sqrt(6.0 * sum);
cout << "근사한 pi = " << pi << endl;n이 커질수록 n = 100000이면 약 3.14158)