Questions tagged «primes»

质数或质数是大于1的整数,它们只能被自身和1整除,即:2、3、5、7、11,...。


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
为什么素数在密码学中很重要?
作为非密码学家,我总是感到一件事:使用素数为什么如此重要?是什么使它们在密码学上如此特别? 有人有简单的简短解释吗?(我知道有很多入门书籍,而《应用密码学》是圣经,但正如我所说:我不是要实现自己的密码算法,而我发现的东西却使我的大脑爆炸了-没有10页的数学公式请 :)) 感谢您提供所有答案。我已经接受了使我最清楚实际概念的那个。


1
为什么在hashCode中使用质数?
我只是想知道为什么在类的hashCode()方法中使用质数?例如,当使用Eclipse生成我的hashCode()方法时,总是使用素数31: public int hashCode() { final int prime = 31; //... } 参考文献: 这是有关Hashcode的一个很好的入门,以及有关我发现的哈希如何工作的文章(C#,但这些概念是可转让的): Eric Lippert的GetHashCode()准则和规则
173 java  hashcode  primes 

30
如何创建最紧凑的映射n→isprime(n)直到极限N?
自然地,因为bool isprime(number)会有可以查询的数据结构。 我定义了最佳算法,该算法将生成在((1,N])范围内具有最低内存消耗的数据结构,其中N是常数。这 只是我要查找的示例:我可以表示每个奇数以一位为例,例如对于给定的数字范围(1,10],从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 

6
BigInteger的.isProbablePrime()的可能用例是什么?
该方法BigInteger.isProbablePrime()很奇怪。从文档中可以看出,数字是否为素数,概率为1 - 1 / 2^arg,其中arg整数参数为。 它已经存在于JDK中很长时间了,因此,它必须具有用途。我对计算机科学和算法(以及数学)的有限了解告诉我,知道一个数字是否“可能”是质数而不是完全是质数并没有什么意义。 那么,在什么情况下想使用此方法呢?密码学?
84 java  primes 

25
生成质数的最优雅方法
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 5年前关闭。 改善这个问题 什么是实现此功能的最佳方法: ArrayList generatePrimes(int n) 此函数生成第一个n素数(edit:where n>1),因此generatePrimes(5)将返回ArrayListwith {2, 3, 5, 7, 11}。(我正在用C#进行此操作,但是我对Java实现很满意-或其他与此类似的语言(因此没有Haskell))。 我确实知道如何编写此函数,但是昨晚当我这样做时,它并没有达到我希望的那样好。这是我想出的: 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 …
84 c#  java  algorithm  primes 

11
C-确定数字是否为质数
我试图提出一个方法,该方法接受一个整数并返回一个布尔值,以表明数字是否为质数,并且我对C的了解不多。有人愿意给我一些指示吗? 基本上,我会在C#中这样做: static bool IsPrime(int number) { for (int i = 2; i < number; i++) { if (number % i == 0 && i != number) return false; } return true; }
75 c#  c  primes 

18
Eratosthenes筛子-查找素数Python
只是为了澄清,这不是一个作业问题:) 我想为正在构建的数学应用程序找到质数,并遇到了Eratosthenes方法的Sieve。 我已经用Python编写了一个实现。但这太慢了。可以说,如果我想找到所有小于200万的素数。耗时> 20分钟。(我此时已停止)。我怎样才能加快速度? def primes_sieve(limit): limitn = limit+1 primes = range(2, limitn) for i in primes: factors = range(i, limitn, i) for f in factors[1:]: if f in primes: primes.remove(f) return primes print primes_sieve(2000) 更新: 我最终对这段代码进行了分析,发现花了很多时间从列表中删除一个元素。考虑到它必须遍历整个列表(最坏的情况)以找到元素,然后删除它,然后重新调整列表(也许会继续复制吗?),这是完全可以理解的。无论如何,我掏出了字典的清单。我的新实现- def primes_sieve1(limit): limitn = limit+1 primes = dict() for i in range(2, limitn): …

5
列表是否可以被另一个整除?
问题 假设您有两个列表A = [a_1, a_2, ..., a_n]和B = [b_1, b_2, ..., b_n]整数。我们说A是潜在的,可分割的B,如果有一个置换B,使得a_i整除b_i所有i。问题是:是否可以重新排序(即置换)B以便所有人都a_i可以整除?例如,如果您有b_ii A = [6, 12, 8] B = [3, 4, 6] 那么答案是True,因为B可以重新排序是B = [3, 6, 4],然后我们就会有a_1 / b_1 = 2,a_2 / b_2 = 2和a_3 / b_3 = 2,所有这一切都是整数,因此A是潜在的,整除B。 作为应该输出的示例False,我们可以有: A = [10, 12, 6, 5, 21, 25] B = …

9
给定素数N,计算下一个素数?
一位同事刚刚告诉我,由于与哈希相关的不可思议的原因,C#词典集合将按质数调整大小。我的直接问题是:“它怎么知道下一个素数?它们是在大型表中还是在运行中进行计算?这是在插入时导致确定大小的可怕的不确定性运行时” 所以我的问题是,给定N(一个质数),计算下一个质数的最有效方法是什么?
67 algorithm  math  primes 
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.