C_C++

(C언어) 라이프니츠의 pi (원주율) 구하는 식

고니자니 2024. 7. 1. 18:26
반응형

라이프니츠(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;
}

 

라이프니츠의 pi (원주율) 구하는 식

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}")
반응형