タグ付けされた質問 「primes」


30
N以下のすべての素数をリストする最速の方法
これは私が思いつく最高のアルゴリズムです。 def get_primes(n): numbers = set(range(n, 1, -1)) primes = [] while numbers: p = numbers.pop() primes.append(p) numbers.difference_update(set(range(p*2, n+1, p))) return primes >>> timeit.Timer(stmt='get_primes.get_primes(1000000)', setup='import get_primes').timeit(1) 1.1499958793645562 さらに速くできますか? このコードには欠陥があります。numbersは順序付けられていないセットであるnumbers.pop()ため、セットから最小数を削除する保証はありません。それにもかかわらず、それはいくつかの入力番号に対して(少なくとも私にとっては)機能します: >>> sum(get_primes(2000000)) 142913828922L #That's the correct sum of all numbers below 2 million >>> 529 in get_primes(1000) False >>> 529 in …

14
暗号で素数が重要なのはなぜですか?
常に暗号解読者ではない私を襲う1つのこと:なぜ素数を使用することがそれほど重要なのですか?それらが暗号化でそれほど特別なのはなぜですか? 誰もが持っていますシンプルな短い説明を?(私は多くの入門書があり、Applied Cryptographyが聖書であることを知っていますが、言ったように:私は自分の暗号アルゴリズムを実装するつもりはありません、そして私が見つけたものは私の脳を爆発させました-10ページの数式ではありませんお願いします :)) すべての回答をありがとう。実際のコンセプトを最も明確にしたものを受け入れました。


9
hashCodeで素数を使用する理由
素数がクラスのhashCode()メソッドで使用されているのはなぜですか?たとえば、Eclipseを使用してhashCode()メソッドを生成する場合、常に素数が31使用されます。 public int hashCode() { final int prime = 31; //... } 参照: Hashcodeの優れた入門書と、私が見つけたハッシュのしくみに関する記事(C#ですが、概念は転送可能です)です 。EricLippertのガイドラインとGetHashCode()のルール
173 java  hashcode  primes 

30
最もコンパクトなマッピングn→isprime(n)を制限Nまで作成する方法は?
当然、bool isprime(number)クエリできるデータ構造があるからです。範囲(1、N]のメモリ消費量が最も少ないデータ構造を生成するアルゴリズムである最適なアルゴリズム を定義します(ここでNは定数です。 私が探しているもののほんの一例:すべての奇数を表すことができます)たとえば、指定された範囲の数値(1、10)の1ビットで、3から始まります。1110 次の辞書はもっと絞れるでしょう?いくつかの作業で5の倍数を削除することもできますが、1、3、7、または9で終わる数字がビットの配列に存在する必要があります。 どうすれば問題を解決できますか?

4
数が正規表現で素数であるかどうかを判断する方法は?
RosettaCodeでJavaの次のコード例を見つけました。 public static boolean prime(int n) { return !new String(new char[n]).matches(".?|(..+?)\\1+"); } 私は特にJavaは知りませんが、正規表現自体を除いて、このスニペットのすべての側面を理解しています 組み込みのPHP関数で見つかるように、Regexの基本的な知識から基本的な高度な知識があります。 .?|(..+?)\\1+素数をどのように照合しますか?
128 java  regex  primes 

25
素数を生成する最もエレガントな方法[クローズ]
クローズ。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集して、事実と引用で回答できるように質問を更新してください。 5年前に閉鎖されました。 この質問を改善する この関数を実装するための最もエレガントな方法は何ですか? ArrayList generatePrimes(int n) この関数は最初のn素数を生成するため(編集:where n>1)、withgeneratePrimes(5)を返します。(私はこれをC#で行っていますが、Javaの実装、またはその他の同様の言語(Haskellではない)に満足しています)。ArrayList{2, 3, 5, 7, 11} この関数の書き方は知っていますが、昨夜やったときは思ったほどうまくいきませんでした。これが私が思いついたものです: ArrayList generatePrimes(int toGenerate) { ArrayList primes = new ArrayList(); primes.Add(2); primes.Add(3); while (primes.Count < toGenerate) { int nextPrime = (int)(primes[primes.Count - 1]) + 2; while (true) { bool isPrime = true; foreach (int n in …
84 c#  java  algorithm  primes 

6
BigIntegerの.isProbablePrime()の可能なユースケースは何ですか?
その方法BigInteger.isProbablePrime()はかなり奇妙です。ドキュメントから、これは、数値が確率で素数であるかどうかを示します。1 - 1 / 2^argここargで、は整数引数です。 それはかなり長い間JDKに存在していたので、それはそれが用途を持っているに違いないことを意味します。コンピュータサイエンスとアルゴリズム(および数学)に関する私の限られた知識は、数が「おそらく」素数であるかどうかを知ることは実際には意味がないが、正確には素数ではないことを教えてくれます。 それで、この方法を使用したいと思う可能性のあるシナリオは何ですか?暗号化?
84 java  primes 
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.