Comienza usando tipos de variables que te permitan las operaciones mencionadas.
int es enterio y es 2^16 = 65536 o sea va de 0 a 65535 en cuanto a los enteros sin signo y la mitad cuando usa signo.
Lo mejor para tu caso es usar unsigned long y ya veremos si requieres de unsigned long long para 64 bits, pero eso es otro capítulo.
Otro tema. Aca estamos en arduino y el main() de C digamos que es otro terreno pero por eso tampoco existe printf() tal como lo usas salvo en algunas placas.
Asi que comencemos definiendo que placa vas a usar?
UNO/NANO/MEGA estan limitadas.
DUE/ESP8266/ESP32/SMT32 en cambio si usan printf y al ser mas potentes tmb toleran otras cosas.
Voy a probar tu código en un NANO solo para ver como se comporta y luego hago mi comentario aquí o en otro post.
Dime como lo compilas?
NOTA: pense que estaban bien pero veo que los códigos estan mal posteados.
Todo debe postearse entre etiquetas.
Edita tu post anterior y toma cada código, lo cortas, click en </> y luego pasteas y entonces ser verá de acuerdo a las normas.