mwultong Blog ... 프로그래밍 / 계산기

컴퓨터 엑셀 워드 포토샵 구글어스 WINDOWS JAVASCRIPT JAVA C++

 
Friday, November 10, 2006

C언어] 원주율(PI) 계산 소스; 소수점 이하 799 자리까지 파이 값 구하기


원주율 계산 소스가 별로 많지 않더군요. 위키를 뒤져보다가 다음과 같은 소스를 발견했습니다.



Original Source:
< Digits of pi calculation - CodeCodex >
www.codecodex.com/wiki/index.php?title=Digits_of_pi_calculation
(2024-06-02: 현재 폐쇄됨)


원주율(파이 값) 소수점 799자리까지 구하는 예제


소스 파일명: 0.cpp
#include <stdio.h>

#define SCALE      10000
#define MAX_ARRAY   2800
#define ARRAY_INIT  2000


int main(void) {
  int i, j, sum, carry = 0;
  int array[MAX_ARRAY + 1];

  for (i = 0; i <= MAX_ARRAY; ++i) array[i] = ARRAY_INIT;  // array 배열 초기화

  for (i = MAX_ARRAY; i; i -= 14) {
    sum = 0;
    for (j = i; j > 0; --j) {
      sum = sum * j + SCALE * array[j];
      array[j] = sum % (j * 2 - 1);
      sum /= (j * 2 - 1);
    }

    printf("%04d", carry + sum / SCALE);
    carry = sum % SCALE;
  }

  return 0;
}



컴파일 및 실행 결과:
D:\Z>cl 0.cpp && 0.exe
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.

0.cpp
Microsoft (R) Incremental Linker Version 7.10.3077
Copyright (C) Microsoft Corporation.  All rights reserved.

/out:0.exe
0.obj
31415926535897932384626433832795028841971693993751058209749445923078164062862089
98628034825342117067982148086513282306647093844609550582231725359408128481117450
28410270193852110555964462294895493038196442881097566593344612847564823378678316
52712019091456485669234603486104543266482133936072602491412737245870066063155881
74881520920962829254091715364367892590360011330530548820466521384146951941511609
43305727036575959195309218611738193261179310511854807446237996274956735188575272
48912279381830119491298336733624406566430860213949463952247371907021798609437027
70539217176293176752384674818467669405132000568127145263560827785771342757789609
17363717872146844090122495343014654958537105079227968925892354201995611212902196
08640344181598136297747713099605187072113499999983729780499510597317328160963185



소수점 이하 799자리까지 정확하게 출력되었습니다. (소수점 제외하고) 정수부의 3까지 포함하면 800자리가 됩니다.


그런데 위의 결과에서는
3141592...
이렇게 소수점이 나오지 않았습니다.

그래서 위의 값을 실제 사용할 때에는
3.141592...
이렇게 점을 찍어서 사용해야 합니다.




참고:

< 원주율 - 위키백과 >

< Pi - Wikipedia >



프로그래밍 언어에는 PI 근사값 상수가 이미 정의되어 있기에, 대부분의 경우 그 상수를 사용하면 됩니다: ▶▶ C언어] 원주율(PI;파이) 근사값 상수, M_PI 출력 예제




tag: cpp
C언어 | C/C++ (Visual C++)

2 Comments:
At July 29, 2008 at 9:52 PM, Anonymous Anonymous said...

ㄳㄳ.
소숫점 20000자리까지 성공시켰어욤.

 
At December 6, 2018 at 9:45 AM, Anonymous Anonymous said...

코드좀 주실 수 있나요? 나니면 원리라도 ㅠㅠ

 

<< Home RSS 2.0 feed

구글 Google 에서 제공하는 무료 블로그 서비스인 블로거 Blogger 의 인터넷 주소는 www.blogger.com 입니다. Blogger 에 블로그를 만들면, blogspot.com 이라는 주소에 블로그가 생성됩니다.
블로그를 직접 방문하지 않고도 최신 게시물을 구독하려면 RSS 2.0 feed 주소를 리더기에 등록하시면 됩니다.
Previous Posts
Monthly Archives
Top