長い整数m = 38941629971148227236Nがあります。 1 < e < mの間にeを生成し、この要件を満たす場合にeをチェックします。gcd(e、m)= 1。私のコードがあるclojureで長い番号をランダムに生成する方法
IllegalArgumentException Value out of range for long:
1.7166121075068025E19 clojure.lang.RT.longCast (RT.java:1254)
:
(defn find-e [m]
(loop [e (long (rand m))]
(if (= 1 (gcd e m)) e
(recur (long (rand m))))))
私は範囲外の結果を知っている長い間、私の方法は、ランダムに電子を生成する(長い(ランドのM))を使用することで、私は警告を得ましたしかし、私はこの問題を解決する方法はありますか?
本当に良い答えです。大きな 'limit'sの場合、再試行回数は問題ではありません。 – muhuk
実際、私は間違っていました。あらゆるビットが検索スペースを倍増させるにつれて問題になる可能性があります。そして、より大きな「限界」が得られると、悪化する。 – muhuk