ÀÚ¿¬´ë¼öÀÇ ¹Ù´Ú e ÀÇ °è»ê


ÇÔ¼ö¸í
e  ÀÚ¿¬´ë¼öÀÇ ¹Ù´Ú eÀÇ °ªÀ» ´ÙÀÚ¸®¼ö·Î »êÃâÇÑ´Ù
Çü½Ä
void e(int *data, int keta);
Àμö
data  (Ãâ·Â) eÀÇ °ªÀÌ 10Áø 4ÀÚ¸®¼ö¾¿ µé¾î°£ Á¤¼öÀÇ ¹è¿­
keta  (ÀÔ·Â) ¼Ò¼öÁ¡ ÀÌÇÏÀÇ ÀÚ¸®¼öÀÇ ÁöÁ¤
ÇÔ¼öÄ¡
¾øÀ½
ÁÖÀÇ »çÇ×

¿ë·Ê(e-test.c )
int data[1000];
e(data, 1000);

e ÀÇ °ª(¼Ò¼öÁ¡ ÀÌÇÏ1¸¸ ÀÚ¸®¼ö)

ÇÁ·Î±×·¥(e.c )
#define LOG2_10    3.322

void e(int *data, int keta)
{
    int  i, j;
    unsigned k, k2, n, s;
    int  len;
    int  *dap;
    long x;
    
    len = (keta-1) / 4 + 2;
    for (dap = data, j = len; j--; ) *dap++ = 0;

    n = keta * LOG2_10 + 1;
    k = 1; k2 = 2;
    s = 0; j = -1;
    for (i = 1; s <= n; i++) {
        if (i >= k) {
            k = k2;
            k2 <<= 1;
            j++;
        }
        s += j;
    }

    *data = 1;
    while (--i) {
        x = 0;
        for (j = len, dap = data; j--; ) {
            x = x * 10000 + *dap;
            *dap++ = x / i;
            x %= i;
        }
        (*data)++;
    }
}
¼³¸í
¸Æ·Ñ¸° Àü°³ ex = 1 + x/1! + x2/2! + ... + xn/n! + ... ¿¡ x = 1 À¸·Î ÀϾ
¡¡¡¡¡¡e = 1 + 1/1! + 1/2! + 1/3! + ... + 1/n! + ...
ÀÇ ½ÄÀ» ÀÌ¿ëÇØ °è»êÇÑ´Ù. °Ô´Ù°¡ ¿ìº¯ÀÇ Á¦2Ç׸ñ ÀÌÈÄÀÇ °è»ê¿¡¼­´Â, °è»ê ȸ¼öÀÇ ÀûÀº ´ÙÀ½ÀÇ ½Ä¿¡ º¯ÇüÇØ »ç¿ëÇÑ´Ù.
¡¡¡¡¡¡(((...((1/n + 1) 1/(n-1) + 1) 1/(n-2) + 1)...) 1/3 + 1) 1/2 + 1

°ü·Ã ÇÔ¼ö