I don’t have a language to stick this onto at the present moment, but I have considered a number system that uses a tiny amount of roots like, say, Toki Pona, while still allowing large numbers to be used.
The roots are s, d, 3, /, representing successor, doubler, three and digit-separator respectively. s is transparently a 1 but can be used in a slightly different way than what one might be used to call 1. d however is quite removed from 2.
For instance, the number zero would be written by just the plain numeral d, not a dedicated 0 symbol. It makes sense since zero doubled is still zero.
1 would be written ds then, as it’s the successor of zero. Optionally, the d can be dropped, resulting in a plain old s.
2 is dsd or sd, and 3 is (transparently) 3. 4 becomes sdd, dd (it would be silly to call zero dd…) or 3s, 5 is dds, 6 is 3d, 7 is 3ds.
From 8 onward, the digit separator is used, so “s/” or “/” for 8. 9 is written /s, meaning both a successor of 8 or a digit separator (with an implicit 1 before it) followed by a digit 1 (represented by s). The rest is simple place-value system.
So, to recap, counting from zero: d, s, sd, 3, 3s, dd, dds, 3d, 3ds, /, /s, /sd, /3, /3s, /dd, /dds, /3d, /3ds, sd/, sd/s, sd/sd, sd/3, sd/dd, sd/dds, sd/3d, sd/3ds, 3/.
I would think that s, d, 3 and / are represented by, or have aliases that are, small (one to two phonemes), so that the whole sequence won’t be too laborious to make.