Tag: 素数

最初的10000个素数的最有效的代码?

我想打印第一个10000个素数。 任何人都可以给我这个最有效的代码? 澄清: 如果您的代码在n> 10000时效率低下,那并不重要。 代码的大小并不重要。 你不能以任何方式硬编码值。

为什么127号(总理)优于128的哈希表?

假设简单的统一散列,那么任何给定的值就像散列到散列的任何一个槽中一样。 为什么使用大小为127而不是128的表格更好? 我真的不明白2号码的力量有什么问题。 或者它实际上如何改变。 在使用除法的时候,我们通常会避免m(table size)的某些值。 例如,m不应该是2的幂,因为如果m = 2 ^ p,那么h(k)就是k的p个最低位。 假设可能的元素只在1到10000之间,我把表格大小选为128. 127怎么能更好? 所以128是2 ^ 6(1000000),127是0111111.这个有什么不同? 所有数字(散列时)仍然是127的k的最低位。 我有什么问题吗? 我正在寻找一些例子,因为我真的不明白为什么这是不好的。 提前感谢! PS:我知道: 哈希表:为什么大小应该是素数?

快速素分解模块

我正在寻找一个实现或明确的algorithm来获得N的主要因式分解在python,伪代码或其他任何可读的。 有一些要求/事实: N在1到20个数字之间 没有预先计算的查找表,memoization是好的,但。 不需要mathcertificate(如果需要,可以依靠哥德巴赫猜想) 如果需要的话,不需要是精确的,可以是概率的/确定的 我需要一个快速素数因子分解algorithm,不仅适用于本身,还适用于许多其他algorithm,如计算Euler phi(n) 。 我尝试过维基百科等其他algorithm,但是我无法理解它们(ECM),或者我无法从algorithm(Pollard-Brent)创build工作实现。 我对Pollard-Brentalgorithm非常感兴趣,所以更多的信息/实现将会非常好。 谢谢! 编辑 经过一段时间后,我创build了一个相当快的素数/分解模块。 它结合了优化的试algorithm,Pollard-Brentalgorithm,miller-rabin素数testing和我在互联网上find的速度最快的primesieve。 gcd是一个规则的Euclid的GCD实现(二进制Euclid的GCD 比常规的要慢得多)。 赏金 哦,快乐,可以获得赏金! 但是我怎么能赢呢? 在我的模块中find最优化或错误。 提供替代/更好的algorithm/实现。 最完整/有build设性的答案得到赏赐。 最后模块本身: import random def primesbelow(N): # http://stackoverflow.com/questions/2068372/fastest-way-to-list-all-primes-below-n-in-python/3035188#3035188 #""" Input N>=6, Returns a list of primes, 2 <= p < N """ correction = N % 6 > 1 N = {0:N, 1:N-1, […]

给定素数N,计算下一个素数?

一位同事告诉我,C#字典集合由于与哈希有关的神秘原因而被素数调整。 而我当前的问题是,“它怎么知道下一个主要是什么?他们是一个巨大的桌面还是dynamic的计算?这是一个可怕的非确定性的运行时插入导致resize” 所以我的问题是,如果N是素数,那么计算下一个素数的最有效方法是什么?

BigInteger的.isProbablePrime()可能的用例是什么?

BigInteger.isProbablePrime()方法很奇怪, 从文档中,这将告诉一个数是否为1 – 1 / 2^arg的概率,其中arg是整数参数。 它已经在JDK中出现了相当长的时间,所以这意味着它必须有用处。 我对计算机科学和algorithm(以及math)知识的有限性告诉我,知道一个数字是否“可能”是一个素数但不完全是一个素数是没有意义的。 那么,什么是可能的情况下,人们会想要使用这种方法? 密码?

为什么素数在密码学中很重要?

有一件事总是把我作为一个非密码学者:为什么使用素数这么重要? 是什么让他们在密码学中如此特别? 有没有人有简单的简短的解释? (我知道有很多引子,应用密码学就是圣经,但是正如我所说的:我并不是想要实现我自己的密码algorithm,而我发现的东西只是让我的大脑爆炸 – 没有10页的math公式请 :)) 感谢所有的答案。 我已经接受了使我的实际概念最清楚的那个。

数字中最大的素因子

计算数字的最大素数的最好方法是什么? 我认为最有效的将是以下几点: find干净划分的最低质数 检查分割结果是否为素数 如果没有,find下一个最低 转到2。 我基于这个假设更容易计算小素因子。 这是对的吗? 我应该考虑哪些其他方法? 编辑:我现在已经意识到,如果有两个以上的素数因子在作用,我的方法是徒劳的,因为如果结果是两个其他素数的乘积,则步骤2失败,因此需要recursionalgorithm。 再次编辑:现在我已经意识到,这仍然有效,因为最后find的素数必须是最高的,因此从步骤2开始的任何非素数结果的进一步testing都会导致更小的素数。

在Python中打印一系列素数

我正在学习Python编程,而且我很新。 我在印刷从一个到一百个素数的问题时遇到了问题。 我无法弄清楚我的代码有什么问题。 这是我写的。 它打印所有的奇数而不是素数: for num in range(1,101): for i in range(2,num): if (num%i==0): break else: print(num) break

哈希码计算的明智之处是什么?

Eclipse 3.5有一个很好的function来生成Java hashCode()函数。 它会产生例如(稍微缩短:) class HashTest { int i; int j; public int hashCode() { final int prime = 31; int result = prime + i; result = prime * result + j; return result; } } (如果在类中有更多的属性, result = prime * result + attribute.hashCode();对每个附加属性重复。对于ints,可以省略.hashCode()。 这看起来很好,但对于素数的select31。 它可能是从Java String的hashCode实现中获得的 ,这是由于硬件乘法器引入后长期以来的性能原因。 在这里,对于i和j的较小值,有很多哈希码碰撞:例如(0,0)和(-1,31)具有相同的值。 我认为这是一个坏事(TM),因为小的值经常出现。 对于String.hashCode,你还会发现许多具有相同散列码的短string,例如“Ca”和“DB”。 如果你select一个较大的素数,那么如果你select了这个素数,这个问题就会消失。 所以我的问题是:什么是最好的select? 你有什么标准来find它? […]

Python语言的isPrime函数

所以我能够从互联网的一点点帮助解决这个问题,这就是我得到的: def isPrime(n): for i in range(2,int(n**0.5)+1): if n%i==0: return False return True 但我的问题确实是如何做到这一点,但为什么。 我知道1不被视为一个“主要”数字,即使它是,我明白,如果它在任何范围内划分,它是自动首要的,因此返回False语句。 但是我的问题是在这里打平“n”这个angular色呢? 非常感谢您的关注 Ps我很缺乏经验,刚刚在一个月前被介绍给编程:S