рд╣рд╛рд▓ рд╣реА рдореЗрдВ, рдкрд╛рдИ рдирдВрдмрд░ рдХреА рдЧрдгрдирд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реБрд░реБрдЪрд┐рдкреВрд░реНрдг рд╕реВрддреНрд░ рд╣реИ, рдЬреЛ рдкрд╣рд▓реА рдмрд╛рд░ 1995 рдореЗрдВ рдбреЗрд╡рд┐рдб рдмреЗрд▓реА, рдкреАрдЯрд░ рдмреЛрд░рд╡рд┐рди рдФрд░ рд╕рд╛рдЗрдорди рдкреНрд▓рдл рджреНрд╡рд╛рд░рд╛ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛:

рдпрд╣ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ: рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛ рдЦрд╛рд╕ рд╣реИ - рдкрд╛рдИ рдХреА рдЧрдгрдирд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдорд╣рд╛рди рдХрдИ рд╕реВрддреНрд░ рд╣реИрдВ: рд╕реНрдХреВрд▓ рдореЛрдВрдЯреЗ рдХрд╛рд░реНрд▓реЛ рд╡рд┐рдзрд┐ рд╕реЗ рдорд╛рдпрд╛рд╡реА рдкреЙрдЗрд╕рди рдЕрднрд┐рдиреНрди рдФрд░ рдлреНрд░реЗрдВрдХреЛрдЗрд╕ рд╡рд┐рдПрдд рдлреЙрд░реНрдореВрд▓рд╛ рджреЗрд░ рд╕реЗ рдордзреНрдп рдпреБрдЧ рд╕реЗред рд▓реЗрдХрд┐рди рдпрд╣ рдЗрд╕ рдлреЙрд░реНрдореВрд▓реЗ рдкрд░ рдареАрдХ рд╣реИ рдХрд┐ рд╡рд┐рд╢реЗрд╖ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП - рдпрд╣ рдЖрдкрдХреЛ рдкрд┐рдЫрд▓реЗ рд╡рд╛рд▓реЗ рдХреЛ рдЦреЛрдЬрдиреЗ рдХреЗ рдмрд┐рдирд╛ рдкрд╛рдИ рдХреЗ рдПрдирдЯреА рдЪрд┐рдиреНрд╣ рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП, рд╕рд╛рде рд╣реА рд╕рд╛рде рддреИрдпрд╛рд░ рд╕реА рднрд╛рд╖рд╛ рдХреЛрдб рдЬреЛ 1,000,000 рд╡реЗрдВ рд╡рд░реНрдг рдХреА рдЧрдгрдирд╛ рдХрд░рддрд╛ рд╣реИ, рдореИрдВ рдПрдХ рд╣реИрд░рд╛рдХреИрдЯ рдХреЗ рд▓рд┐рдП рдкреВрдЫрддрд╛ рд╣реВрдВред
Pi рдХрд╛рдо рдХреЗ Nth рд╕рдВрдХреЗрдд рдХреА рдЧрдгрдирд╛ рдХреЗ рд▓рд┐рдП рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреИрд╕реЗ рдХрд░рддрд╛ рд╣реИ?
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рд╣рдореЗрдВ Pi рдХреЗ
1000 рд╡реЗрдВ рд╣реЗрдХреНрд╕рд╛рдбреЗрд╕рд┐рдорд▓ рдЪрд┐рдиреНрд╣ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рд╣рдо рдкреВрд░реЗ рд╕реВрддреНрд░ рдХреЛ 16 ^ 1000 рд╕реЗ рдЧреБрдгрд╛ рдХрд░рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рд╕реЗ рдХреЛрд╖реНрдардХ рдХреЗ рд╕рд╛рдордиреЗ рдХрд╛рд░рдХ 16 ^ (1000-k) рддрдХ рдЙрд▓рдЯ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдЬрдм рдШрд╛рддрд╛рдВрдХ, рд╣рдо
рджреНрд╡рд┐рдЖрдзрд╛рд░реА рдШрд╛рддрд╛рдВрдХ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдпрд╛, рдЬреИрд╕рд╛ рдХрд┐ рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рджрд┐рдЦрд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛,
рдШрд╛рддрд╛рдВрдХ рдореЛрдбреБрд▓реЛ ред рдЙрд╕рдХреЗ рдмрд╛рдж, рд╣рдо рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЗ рдХрдИ рд╕рджрд╕реНрдпреЛрдВ рдХреЗ рдпреЛрдЧ рдХреА рдЧрдгрдирд╛ рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдмрд╣реБрдд рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИ: рдЬреИрд╕реЗ рдХрд┐ k рдмрдврд╝рддрд╛ рд╣реИ, 16 ^ (Nk) рдЬрд▓реНрджреА рд╕реЗ рдШрдЯрддрд╛ рд╣реИ, рддрд╛рдХрд┐ рдмрд╛рдж рдХреА рд╢рд░реНрддреЗрдВ рд╡рд╛рдВрдЫрд┐рдд рдЕрдВрдХреЛрдВ рдХреЗ рдореВрд▓реНрдп рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рди рдХрд░реЗрдВ)ред рдпрд╣ рд╕рдм рдЬрд╛рджреВ рд╣реИ - рд╕рд░рд▓ рдФрд░ рд╕рд░рд▓ред
рдмреЗрд▓реА-рдмреЛрд░рд╡рд┐рди-рдкрдл рдлреЙрд░реНрдореВрд▓рд╛ рд╕рд╛рдЗрдорди рдкрдл рджреНрд╡рд╛рд░рд╛
рдкреАрдПрд╕рдПрд▓рдХреНрдпреВ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкрд╛рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЬреЛ 2000 рдореЗрдВ
рд╕реЗрдВрдЪреБрд░реА рд╕реВрдЪреА рдХреЗ
рд╢реАрд░реНрд╖ 10 рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдерд╛ред PSLQ рдПрд▓реНрдЧреЛрд░рд┐рдердо рд╕реНрд╡рдпрдВ рдмреЗрд▓реА рджреНрд╡рд╛рд░рд╛ рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдпрд╣рд╛рдВ рдЧрдгрд┐рддрдЬреНрдЮреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рдореИрдХреНрд╕рд┐рдХрди рд╢реНрд░реГрдВрдЦрд▓рд╛ рд╣реИред
рд╡реИрд╕реЗ, рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХрд╛ рдЪрд▓рдиреЗ рдХрд╛ рд╕рдордп рдУ (рдПрди) рд╣реИ, рдореЗрдореЛрд░реА рдЙрдкрдпреЛрдЧ рдУ (рд▓реЙрдЧ рдПрди) рд╣реИ, рдЬрд╣рд╛рдВ рдПрди рд╡рд╛рдВрдЫрд┐рдд рдЪрд░рд┐рддреНрд░ рдХрд╛ рд╕реАрд░рд┐рдпрд▓ рдирдВрдмрд░ рд╣реИред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЗ рд▓реЗрдЦрдХ рдбреЗрд╡рд┐рдб рдмреЗрд▓реА рджреНрд╡рд╛рд░рд╛ рд╕реАрдзреЗ рд╕реА рдореЗрдВ рд▓рд┐рдЦреЗ рдЧрдП рдХреЛрдб рдХрд╛ рд╣рд╡рд╛рд▓рд╛ рджреЗрдирд╛ рдЙрдЪрд┐рдд рд╣реЛрдЧрд╛:
#include <stdio.h> #include <math.h> int main() { double pid, s1, s2, s3, s4; double series (int m, int n); void ihex (double x, int m, char c[]); int id = 1000000; #define NHX 16 char chx[NHX]; /* id is the digit position. Digits generated follow immediately after id. */ s1 = series (1, id); s2 = series (4, id); s3 = series (5, id); s4 = series (6, id); pid = 4. * s1 - 2. * s2 - s3 - s4; pid = pid - (int) pid + 1.; ihex (pid, NHX, chx); printf (" position = %i\n fraction = %.15f \n hex digits = %10.10s\n", id, pid, chx); } void ihex (double x, int nhx, char chx[]) /* This returns, in chx, the first nhx hex digits of the fraction of x. */ { int i; double y; char hx[] = "0123456789ABCDEF"; y = fabs (x); for (i = 0; i < nhx; i++){ y = 16. * (y - floor (y)); chx[i] = hx[(int) y]; } } double series (int m, int id) /* This routine evaluates the series sum_k 16^(id-k)/(8*k+m) using the modular exponentiation technique. */ { int k; double ak, eps, p, s, t; double expm (double x, double y); #define eps 1e-17 s = 0.; /* Sum the series up to id. */ for (k = 0; k < id; k++){ ak = 8 * k + m; p = id - k; t = expm (p, ak); s = s + t / ak; s = s - (int) s; } /* Compute a few terms where k >= id. */ for (k = id; k <= id + 100; k++){ ak = 8 * k + m; t = pow (16., (double) (id - k)) / ak; if (t < eps) break; s = s + t; s = s - (int) s; } return s; } double expm (double p, double ak) /* expm = 16^p mod ak. This routine uses the left-to-right binary exponentiation scheme. */ { int i, j; double p1, pt, r; #define ntp 25 static double tp[ntp]; static int tp1 = 0; /* If this is the first call to expm, fill the power of two table tp. */ if (tp1 == 0) { tp1 = 1; tp[0] = 1.; for (i = 1; i < ntp; i++) tp[i] = 2. * tp[i-1]; } if (ak == 1.) return 0.; /* Find the greatest power of two less than or equal to p. */ for (i = 0; i < ntp; i++) if (tp[i] > p) break; pt = tp[i-1]; p1 = p; r = 1.; /* Perform binary exponentiation algorithm modulo ak. */ for (j = 1; j <= i; j++){ if (p1 >= pt){ r = 16. * r; r = r - (int) (r / ak) * ak; p1 = p1 - pt; } pt = 0.5 * pt; if (pt >= 1.){ r = r * r; r = r - (int) (r / ak) * ak; } } return r; }
рдпрд╣ рдХреНрдпрд╛ рдЕрд╡рд╕рд░ рджреЗрддрд╛ рд╣реИ? рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП: рд╣рдо рдПрдХ рд╡рд┐рддрд░рд┐рдд рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдкрд╛рдИ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреА рдЧрдгрдирд╛ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЧрдгрдирд╛ рд╕рдЯреАрдХрддрд╛ рдХреЗ рд▓рд┐рдП рдкреВрд░реЗ рд╣реЗрдмреНрд░рдд рдХреЗ рдирдП рд░рд┐рдХреЙрд░реНрдб рдХреЛ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ (рдЬреЛ рдХрд┐ рдЕрдм, рд╡реИрд╕реЗ, 10 рдЯреНрд░рд┐рд▓рд┐рдпрди рджрд╢рдорд▓рд╡ рд╕реНрдерд╛рди рд╣реИ)ред рдЕрдиреБрднрд╡рдЬрдиреНрдп рдЖрдВрдХрдбрд╝реЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдкреАрдЖрдИ рд╕рдВрдЦреНрдпрд╛ рдХрд╛ рдЖрдВрд╢рд┐рдХ рд╣рд┐рд╕реНрд╕рд╛ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рдЕрдиреБрдХреНрд░рдо рд╣реИ (рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдЕрднреА рддрдХ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд░реВрдк рд╕реЗ рд╕рд┐рджреНрдз рдирд╣реАрдВ рд╣реБрдЖ рд╣реИ), рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдЗрд╕рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдЕрдВрдХреЛрдВ рдХреЗ рдЕрдиреБрдХреНрд░рдо рдкрд╛рд╕рд╡рд░реНрдб рдФрд░ рд╕рд┐рд░реНрдл рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╕рдВрдЦреНрдпрд╛, рдпрд╛ рдХреНрд░рд┐рдкреНрдЯреЛрдЧреНрд░рд╛рдлрд┐рдХ рдПрд▓реНрдЧреЛрд░рд┐рджрдо (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣реИрд╢рд┐рдВрдЧ) рдореЗрдВ рдЙрддреНрдкрдиреНрди рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред ред рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдХрдИ рддрд░реАрдХреЗ рд╣реИрдВ - рдЖрдкрдХреЛ рдмрд╕ рдЕрдкрдиреА рдХрд▓реНрдкрдирд╛ рдХреЛ рдЪрд╛рд▓реВ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдЖрдк рдбреЗрд╡рд┐рдб рдмреЗрд▓реА рдХреЗ рдПрдХ рд▓реЗрдЦ рдореЗрдВ рд╡рд┐рд╖рдп рдкрд░ рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд╣рд╛рдВ рд╡рд╣ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдФрд░ рдЗрд╕рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди (
рдкреАрдбреАрдПрдл ) рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдмрд╛рдд рдХрд░рддрд╛ рд╣реИ;
рдФрд░ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдЗрд╕ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд░рдиреЗрдЯ рдореЗрдВ рдкрд╣рд▓рд╛ рд░реВрд╕реА рднрд╛рд╖рд╛ рдХрд╛ рд▓реЗрдЦ рдкрдврд╝рддреЗ рд╣реИрдВ - рдореИрдВ рджреВрд╕рд░реЛрдВ рдХреЛ рдирд╣реАрдВ рдвреВрдВрдв рд╕рдХрд╛ред