rendered paste body#include <stdio.h>typedef unsigned char uint8;typedef unsigned long uint32;#define ARRAY_SIZE 8192 /* Calculate powers of two up to X numbers long */#define LowNb(x) (x&0x0F)#define HighNb(x) ((x&0xF0)>>4)void Print_Number(uint32 cLoop, uint8 number[]){ int i=ARRAY_SIZE-1; printf("2^%3u ",cLoop); while(HighNb(number[i])==0 && LowNb(number[i])==0) { printf(" "); i--; } if(HighNb(number[i])) printf("%u%u",HighNb(number[i]),LowNb(number[i])); else printf(" %u",LowNb(number[i])); for(i--; i>-1; i--) printf("%u%u",HighNb(number[i]),LowNb(number[i])); printf("\r\n");}int main(int argc, char* arg[]){ uint8 final[ARRAY_SIZE]; uint8 cRet = 0; uint8 cNb = 0; uint8 cTmp = 0; uint32 cLoop = 0; for(uint32 i=0; i<ARRAY_SIZE; i++) final[i] = 0; final[0] = 1; while ( 1 ) { cLoop++; for (uint32 i=0; i<ARRAY_SIZE; i++) { cTmp = (LowNb(final[i]))*2 + cRet; if( cTmp>9 ) { cRet = 1; cTmp %= 10; } else cRet = 0; cNb = cTmp; cTmp = (HighNb(final[i]))*2 + cRet; if( cTmp>9 ) { cRet = 1; cTmp %= 10; } else cRet = 0; cNb |= (cTmp<<4); final[i] = cNb; } //Print_Number(cLoop, final); //Uncomment to output every friggin' number (can be huge) if( HighNb(final[ARRAY_SIZE-1])>5 ) break; } Print_Number(cLoop, final); printf("We have reached 2^%u", cLoop); return 1;}