大きな数を扱うのに適した言語をお勧めできますか?
これまでのところ、Actionscript 2 と Objective-c を使用してきましたが、Objective-c を使用してもNSDecimalNumbers
、計算で 32 桁に制限されていました... 50,000 桁の数字で計算できるようにするには、少なくとも必要です。
大きな数を扱うのに適した言語をお勧めできますか?
これまでのところ、Actionscript 2 と Objective-c を使用してきましたが、Objective-c を使用してもNSDecimalNumbers
、計算で 32 桁に制限されていました... 50,000 桁の数字で計算できるようにするには、少なくとも必要です。
Pythonには任意の長さの整数があり、それらを透過的に使用するため、このための特別なコードやクラスは必要ありません。
>>> len(str(math.factorial(123456)))
574965
おそらくすでにマシンにインストールされているbcも試してください。
おそらくHaskellはあなたにアピールするでしょう。
現在、ほとんどの言語は、ネイティブに、または何らかの外部ライブラリ (つまり gmp) を介して、任意の長さの数値を何らかの形でサポートしています。
唯一の重要な違い*は、言語内の統合レベルです。たとえば、C++、Python、Perl、SWI-Prolog、Haskell、C# などでは、標準の数学演算子を使用して、big-int を他の組み込みの数値型として操作できます。一方、C、Objective-C、Java などの演算子のオーバーロードをサポートしていない言語では、ライブラリ関数を明示的に使用する必要があります。
アプリケーションでの big-int 操作の普及度に応じて、より big-int に適した言語に切り替えるかどうかにかかわらず、成果が得られる場合があります。
アップデート
[*] もちろん、正確さと速度も重要です。しかし、ほとんどの言語は内部で GMP を使用しているため、その点で大きな違いはありません。独自の big-int 実装を提供する Mathematica や Maple などの数学指向の (そして高価な!) 言語/アプリケーションは、ここで何らかの利点を持つ可能性があります。
そのクラスで Java を試すBigInteger
か、C で小さなライブラリを作成することを検討できます。数学がかなり単純な場合は、いつでも配列を使用できます。
おそらくMatlabを試してください(わからない)