私はいくつかのプロジェクトオイラーの問題をいじくり回してきましたが、当然、型番号よりも大きいlong long数の処理を必要とする多くの問題に遭遇しています。私はCocoaとObjective-C(仕事のために鋭敏でいる必要があります)を使用することを約束していますが、これらの本当に大きな数を処理するためのエレガントな方法(ライブラリを読む)を見つけることができません。
GMPを使用したいのですが、Xcodeで使用するのは完全に傷ついた世界のようです。
誰か他のオプションを知っていますか?
私はいくつかのプロジェクトオイラーの問題をいじくり回してきましたが、当然、型番号よりも大きいlong long数の処理を必要とする多くの問題に遭遇しています。私はCocoaとObjective-C(仕事のために鋭敏でいる必要があります)を使用することを約束していますが、これらの本当に大きな数を処理するためのエレガントな方法(ライブラリを読む)を見つけることができません。
GMPを使用したいのですが、Xcodeで使用するのは完全に傷ついた世界のようです。
誰か他のオプションを知っていますか?
もし私があなたなら、 XCodeの外でgmpをコンパイルし、XCodeプロジェクトでgmp.hとlibgmp.a(またはlibgmp.dylib)だけを使用します。
数字を配列に格納してみてください。
あなたはすべての算術問題のためにいくつかの新しい関数を書かなければならないでしょうが、それは私たちが大学でそれをするように言われた方法です。
さらに、大きな数値は結局のところそれほど大きくなく、まったく数値ではなかったため、計算の速度はかなり向上しました。
それが役立つかどうかを確認する
よろしく
vBigNuminvecLibは1024ビット整数(符号付きまたは符号なし)を実装します。それで十分ですか?
matlab(またはそれに近いもの)を使用したい場合は、ファイル交換での大きな整数形式(vpi)の実装を確認できます。
かなり簡単です。各桁を個別に保存します。加算と減算は簡単で、キャリー操作を実装するだけです。乗算は、畳み込み、次にキャリーを使用して行うのが最適です。除算演算子とmod演算子を実装してから、powermod演算を実装します。これは、PEの問題の多くに役立ちます。累乗は簡単です。指数の2進表現に基づいて、2乗と乗算を繰り返すだけです。
これにより、多くのPEの問題を解決できます。
私もCocoa/Objective-Cでオイラープロジェクトの問題を試すという素晴らしいアイデアを思いつき、それがイライラすることに気づきました。私は以前にJavaとおそらくいくつかのPHPを使用していました。私はこのスレッドに私の正確な問題を投稿 しました。
私はいつもこのプロジェクトのために図書館の不正行為を使うことを考えていました。必要なものを使ってクラスを書くだけです。また、mallocやuint64_tなどを使用することを恐れないでください。多くの場合、NSNumberは適切ではありません。
一方で、明白な解決策が巨大な数から非常に巨大な数を必要とする多くの問題があり、トリックはこれらの巨大な数を使用せずに問題を解決する方法を見つけることです。(たとえば、1,000,000階乗の最後の1000桁の合計は何ですか)?