Manejo de números enormes

Bueno he llegado hasta

1564557354^50 = 5978481980109475712822030153757829327463589753598053197600968435072353321849121226011761431386203036987814278940055593124357831552614265910916742072210685279271714363821791701984109985991894185483931851346149376

Creo que es un comienzo no?

#include <Arduino.h>

// BigNumber test: powers
#include "BigNumber.h"

void setup ()
{
  Serial.begin (115200);
  Serial.println ();
  BigNumber::begin ();  // initialize library

  Serial.println ("--- powers of 2 ---");
  
  BigNumber a = 1564557354;

  for (int i = 1; i <= 100; i++)
  {
    Serial.print ("1564557354^");
    Serial.print (i);
    Serial.print (" = ");
    BigNumber p = a.pow (i);
    Serial.println (p);
  }  // end of for loop

}  // end of setup

void loop () { }

IMPORTANTE!! No son correctos
Era demasiado bueno.
Evidentemente funciona para potencia de 2^ potencias de 3^ pero no para potencias de 1564557354^
Los números no son correctos mas allá que vi tantos que pensé que lo eran

Es muy posible que el limite este establecido en este define

#define MUL_BASE_DIGITS 80

Que ahora no encuentro donde lo vi.
La limitación es de RAM. Lo probé en un NANO.
Hay que pasar a placas con mas RAM.
Probaré un ESP8266 o un ESP32.

En un ESP8266 con esta base 123456 llego hasta exponente 100

123456^100 = 141651168940626040157173922295237694614407777111544929689914197215146037495716786002181514731502873952752208030711253307891310800045294972947142889897546596311778001481494350554032710769350421462376714987249722830547951312118519834558204292797510714465501274866500440431911234712671638258387067887030220472817288171611494820369323344867858431232828843615679582021753004875875074756298915946141612348303044632387866341223891372523873802426701213600095087751157822483552890441037881153637257214553128381370597376

Increíble.
Vamos con el objetivo del OP

Con la base y con esponente 100 llega.

Bueno y el limite para tu base es el exponente 903.


No son todos los números y no se quien puede comprobarlos, jajaja

Disfruta.

Esto en un ESP8266, tal vez un ESP32 que tiene mas RAM llegue a 1000.

#include "BigNumber.h"

void setup ()
{
  Serial.begin (115200);
  Serial.println ();
  BigNumber::begin ();  // initialize library

  Serial.println ("--- powers of 2 ---");
  
  BigNumber a = 1564557354;
  int i = 903;
  //for (int i = 900; i <= 902; i++)   {
    Serial.print("1564557354^"+String(i)+" = ");
    BigNumber p = a.pow(i);
    Serial.print(p);
    Serial.println();
  //}  // end of for loop

}  // end of setup

void loop () { }