반응형
라이프니츠(Leibniz)는 파이(π)를 구하는 방법 중 하나로 라이프니츠 급수(Leibniz series)를 제안했습니다. 이 급수는 다음과 같은 형태를 가지고 있습니다.
이 급수는 무한히 계속되어야 정확한 값을 얻을 수 있지만, 일부 항만을 사용해도 파이의 근사값을 구할 수 있습니다.
C 언어, C++, 파이썬 언어로 라이프니츠 급수를 이용해 파이의 값을 구하는 프로그램은 작성했습니다.
여기서 반복 횟수가 많을수록 더 정확한 파이 값을 얻을 수 있습니다. 하지만 컴퓨터의 계산 성능 및 부동 소수점의 한계로 인해 무한히 정확한 값을 얻을 수는 없습니다.
C언어 코드
#include <stdio.h>
int main() {
long i, num_iterations;
double pi = 0.0;
int sign = 1;
// 사용자로부터 반복 횟수를 입력 받음
printf("반복 횟수를 입력하세요: ");
scanf("%ld", &num_iterations);
for (i = 0; i < num_iterations; i++) {
pi += sign * 4.0 / (2.0 * i + 1.0);
sign = -sign; // 부호를 반전시킴
}
printf("파이의 근사값: %.15f\n", pi);
return 0;
}
C++ 코드
#include <iostream>
int main() {
long num_iterations;
double pi = 0.0;
int sign = 1;
// 사용자로부터 반복 횟수를 입력 받음
std::cout << "반복 횟수를 입력하세요: ";
std::cin >> num_iterations;
for (long i = 0; i < num_iterations; i++) {
pi += sign * 4.0 / (2.0 * i + 1.0);
sign = -sign; // 부호를 반전시킴
}
std::cout << "파이의 근사값: " << pi << std::endl;
return 0;
}
파이썬 코드
# 사용자로부터 반복 횟수를 입력 받음
num_iterations = int(input("반복 횟수를 입력하세요: "))
pi = 0.0
sign = 1
for i in range(num_iterations):
pi += sign * 4.0 / (2.0 * i + 1.0)
sign = -sign # 부호를 반전시킴
print(f"파이의 근사값: {pi}")
반응형
'C_C++' 카테고리의 다른 글
(C언어) 달력 만들기(한 달) (1) | 2024.07.07 |
---|---|
(C언어) 달력 만들기 (1년) (0) | 2024.07.06 |
(C++) 이진파일을 16진수로 출력하기 (0) | 2024.06.11 |
(C++) 구조체를 이용해서 데이터 파일 읽기: fstream (0) | 2024.06.10 |
(C++) 스트림 입출력: ofstream, ifstream, fstream, eof(), getline() (0) | 2024.06.09 |