Магия числ

Вот простенькая программка без единой операции деления или вычисления остатка, без условных операторов или выражений, и без единого явно упомянутого простого числа, которая печатает простые числа вплоть до 67. А в числах с плавающей точкой типа double значащих бит всего 53, включая скрытый.

#include <stdio.h>
#include <math.h>

double magic(double f) {
    double ff = floor(f);
    double r = log(ff+6)*(log(ff+6)-1);
    return (f-ff)*floor(r)+f;
}

double C = 2.6358597414547913;

int main() {
    int i;
    for (i = 1; i < 20; ++i) {
        printf("%d\n", (int)C);
        C = magic(C);
    }
    return 0;
}


Сможете улучшить результат?




This entry was originally posted at https://spamsink.dreamwidth.org/1197779.html. Please comment there using OpenID.