まずは回答してくださった皆さんに感謝を。

>> 245
2つも32 bit int使う必要は無かったですね。
最大値は決まっているんだから残りのbitに回数を詰め込めば良いというのは失念していました。
やはり500,000種以上になった場合ファイルしか無いですかね。

>> 246
8byteは32bit int x 2です。
回数保持用に一つ 32 bitと2000000まで入る数値用に一つ 32 bit。
まぁ上記の通り4byteで収める事も出来るのですが。
8byte使って今まで出てきた番号をセーブする場合262144種セーブ出来ることになります。
(2097152 byte / 8 byte/種 = 262144種)
凡そで計算したときに250000種と出したのはその所為です

>> 247
確かにunsigned charならば全種保存は出来ますが回数保存が最大255までしか出来ないのが困りものですね。
ファイルに保存をしないとなると何かしらのリミットが付いてしまうのは仕方が無い事なのかもしれません。