spamsink: (Default)
[personal profile] spamsink
Вот простенькая программка без единой операции деления или вычисления остатка, без условных операторов или выражений, и без единого явно упомянутого простого числа, которая печатает простые числа вплоть до 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;
}


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


Date: 2020-12-11 08:33 pm (UTC)
juan_gandhi: (Default)
From: [personal profile] juan_gandhi

Фигасе.

Date: 2020-12-11 08:46 pm (UTC)
vak: (Default)
From: [personal profile] vak
И правда магия.

Date: 2020-12-11 09:31 pm (UTC)
archaicos: Шарж (Default)
From: [personal profile] archaicos
А нам нужно long double?
Page generated Jul. 21st, 2025 02:09 pm
Powered by Dreamwidth Studios