Sto cercando di pensare a come farei per fare calcoli su numeri estremamente grandi (all'infinito - interger senza float) se il costrutto del linguaggio non è in grado di gestire numeri più grandi di un certo valore.
Sono sicuro di non essere il primo né l'ultimo a porre questa domanda, ma i termini di ricerca che sto usando non mi danno un algoritmo per gestire quelle situazioni. Piuttosto, la maggior parte dei suggerimenti offre un cambio di lingua o variabile o parla di cose che sembrano irrilevanti per la mia ricerca. Quindi ho bisogno di una piccola guida.
Vorrei delineare un algoritmo come questo:
Determina la lunghezza massima della variabile intera per la lingua.
Se un numero è superiore alla metà della lunghezza massima della variabile, suddividerlo in un array. (dai una piccola sala giochi)
Ordine array [0] = i numeri più a destra [n-max] = numeri più a sinistra
Ex. Num: 29392023 Array [0]: 23, Array [1]: 20, array [2]: 39, array [3]: 29
Da quando ho stabilito la metà della lunghezza della variabile come punto di demarcazione posso quindi calcolare quelli, i decimi, i centesimi, ecc. Posizionare tramite il segno a metà in modo che se una lunghezza massima variabile fosse di 10 cifre da 0 a 9999999999, allora so che dimezzandolo a cinque cifre mi dà un po 'di sala giochi.
Quindi, se aggiungo o moltiplico, posso avere una funzione di controllo variabile che vede che la sesta cifra (da destra) dell'array [0] è la stessa posizione della prima cifra (da destra) dell'array [1].
La divisione e la sottrazione hanno i loro problemi a cui non ho ancora pensato.
Vorrei sapere quali sono le migliori implementazioni per supportare un numero maggiore di quanto il programma possa fare.