From 3b31c031c29089d2989a70e7b1a847b6b796d245 Mon Sep 17 00:00:00 2001 From: kay Date: Tue, 2 Sep 2025 17:54:18 -0700 Subject: [PATCH] added code --- .e.c.swp | Bin 0 -> 12288 bytes README.md | 0 e.c | 65 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 65 insertions(+) create mode 100644 .e.c.swp create mode 100644 README.md create mode 100644 e.c diff --git a/.e.c.swp b/.e.c.swp new file mode 100644 index 0000000000000000000000000000000000000000..1a8ac73799e008b79cf62a9c240fc37517f2dedb GIT binary patch literal 12288 zcmeI2&x;&I6vu15NYogA+`Ra9!^WPUJ+q7AI6DId5j?nfh&i|!v8KCvrbtiK*j=67 zi3G_%;19&BD0uRs=s^$!1wD9IP=Y5<0X=#0WWLos-I>Y4p7s)`h7Z&Iy6XM-zE=w& zJ?>n7mV;%7Lgr)vGk=M8p zzM0K^J?1kREqvjNc5uQb_sS{Y6gVXX&a&N|ZpS)1zqLtEKJoe~`E_ob0!{&^fK$LJ z;1qBQI0c*nPJ#PD0W;rV?;_C$mdU=j{N1?cclqdkoB~b(r+`zyDc}@v3OEIv0!{&^ zfK$LJ;1swI72qLbhi4f3=piJJ|Nk%l{r}H7#{K|5fv>=q;1lpZxCt~+;0ibZZ-5Ti z0Jk4y>__ke_ySx9m%+>6B4~oAz=Po5vy9yW-+`~edmsdFfj7Yj48Y^y)+3Dl0)7Uc zf)HE;L*RoJXo9B!1Ajlv*q`8g@Hq%T51a%4q2AlzFYr6~6?_9e10Msc$4%far+`zy zDc}@v3OEIv0#1QbR^SFBN`%Q0McqE`qvW_n2v4*_Iguu<*){l%RGG-zinxqLNJdj6 zRY)&*SJYO%z`DRPoi-YFJyBt(B6SL@jdrhZySnnPGZk*qcAUX+lY%Tsgff?e%7YNe z$U_Vo4yZ>LE|5%LOXN&=E9+|X4znKbnrJ{P3uv3Vo${(t9Z%Gtve*N7AK6q7rzkX! zwTG9nP!lt)S?zhbiK z*RZ_~_6DT-BpZ!FJm05aDuSyN@xbULrEG3Hp1z&&L{Or&snS@^Q5CjGYjZ$5wmph) zw_Dt8({uKzyY}>K6)+7j7m9RdNM*CJKvXm3h61jhF*Fu-LS}-EwT`QS&$_M*jozr4mzT$ZF6mrOv>_f( zbOKFg3~83a!c!ixUc<=7_!#}J(D|U32WK^+Efa1-5yWA_NUOxaY&;o5 +#include +#include +#include + +typedef struct { + int* digits; + int length; +} Transcendental; + +Transcendental e; + + +void calcDigits(unsigned int numDigits) { + // declare dynamic array to hold digits of e + e.length = numDigits; + e.digits = (int *) malloc(numDigits); + + // spigot algorithm + int N = numDigits + 9, a[numDigits+9], x = 0; + for (int n = N - 1; n > 0; --n) { + a[n] = 1; + } + a[1] = 2, a[0] = 0; + while (N > 9) { + int n = N--; + while (--n) { + a[n] = x % n; + x = 10 * a[n-1] + x/n; + } + // populate array with digits + e.digits[(numDigits+8) - N] = x%10; + } +} + +bool isPrime(unsigned long n) { + // screen out numbers that can't be prime + if (n != 2 && n != 3 && n % 6 != 1 && n % 6 != 5) { + return false; + } + // check factors up to square root + for (unsigned int i=3; (unsigned long) i * i <= n; i++) { + if (n % i == 0) return false; + } + return true; +} + +int main() { + //get first 1000 digits of e + calcDigits(1000); + int pos = 0; + unsigned long currentTen = 2; + while(pos < e.length){ + currentTen = (currentTen % 1000000000) * 10 + e.digits[pos]; + if(pos >= 9 && isPrime(currentTen)) { + printf("found! %lu\n", currentTen); + free(e.digits); + return 0; + } + pos++; + } + printf("failed to find :(\n"); + free(e.digits); + return 1; +}