Python挑战:给定范围内素数的不同组合
考虑这一挑战: 给定两个数字Python挑战:给定范围内素数的不同组合,python,primes,Python,Primes,考虑这一挑战: 给定两个数字A和B,您可以用多少种方式选择B不同的素数,其中每个素数应小于或等于A( 应该是 for i in range(2, A+1): P>因为你必须考虑所有的素数 P > Ionut关于包容性问题是正确的! 除此之外,您还应将nPk定义更改为: def nPk(n,k): return int( factorial(n)/(factorial(n- k) * factorial(k))) alfasin是正确的;问题是选择素数的顺序无关紧要。因此,您希望使用
A
和B
,您可以用多少种方式选择B
不同的素数,其中每个素数应小于或等于A
(
应该是
for i in range(2, A+1):
<> P>因为你必须考虑所有的素数<强> P > Ionut关于包容性问题是正确的!
除此之外,您还应将nPk定义更改为:
def nPk(n,k):
return int( factorial(n)/(factorial(n- k) * factorial(k)))
alfasin是正确的;问题是选择素数的顺序无关紧要。因此,您希望使用组合而不是排列。顺便说一句,如果您在搜索is_prime
时使用已知的素数,您可以大大加快素数的搜索速度。参见。@9000您的意思是?这是对代码的一个调整您链接到,并且速度快了1.3倍,需要O(sqrt(n/log n))而不是O(n)额外的空间来生成n个素数。编辑的函数在某些情况下失败,例如对于n=334和k=25,我不明白为什么,请您再看一看
for i in range(2, A+1):
def nPk(n,k):
return int( factorial(n)/(factorial(n- k) * factorial(k)))