В общем, есть код:
| Код | const int N = 1e6; uint64_t magic = 0x0100010001000100LL; int main(int argc, char *argv[]) { char p[N+8]; long long sum = 5; uint64_t* pp = (uint64_t*)p; for (int i=0; i<=N/8; ++i) *pp++ = magic; int sqrtN = sqrt(N); for(int i=5;i<=sqrtN;) { int i2 = 2*i; for(int j=3*i; j<N; j+=i2) p[j]=0; ++i; for (; !p[i]; ++i); } for(int i=5; i<N; i+=6) { if(p[i]) sum+=i; if(p[i+2]) sum+=i+2; } printf("%lld\n", sum); return 0; }
|
Он каким-то хитрым образом вычисляет сумму всех простых чисел от 2 до миллиона. Нужна ваша помощь в его переводе на язык Delphi. Если не трудно, распишите по шагам, что делает этот код, и запостите начальное значение всех используемых переменных. Заранее огромное спасибо ! |