#include #include #define _EULER1 1 double euler(int n) { double result = 0.0; for(int i = 1; i < n; i++) result += 1.0 / (double)i; return result; } double euler2(int n) { double result1 = 0.0; double result2 = 0.0; for(int i = 1; i < n; i += 2) { result1 += 1.0 / (double)i; result2 += 1.0 / (double)(i + 1); } if(n % 2) //odd return result1 + result2 + 1.0 / (double)n; else //even return result1 + result2; } void main(void) { int t; t = GetTickCount(); #ifdef _EULER1 printf("%f\n", euler(1000000000)); #else printf("%f\n", euler2(1000000000)); #endif printf("%dms\n", GetTickCount() - t); }