'Generator' 表示范围内的素数
'Generator' for Prime numbers in a range
谁能帮我解决这个困扰我好几个星期的 hackerrank 问题!
我正在定义一个有 2 个参数的函数。参数'num'是一个整数,是必须生成质数的范围,参数'val'包含0或1。但它还有一个条件:
'num' 值为 21 的素数是 - 2 3 5 7 11 13 17 19
- 如果'val'的值为0,则产生值:3 7 13 19 [奇数索引值]
- 如果'val'为1,屈服值应为:2 5 11 17 [偶数索引值]
我试过下面的代码
def primenum(num, val):
for i in range(3-val,num):
if(i > 2):
for j in range(2,i):
if(i%j == 0):
break
else:
yield i
如果要在生产环境中使用它,您应该使用更有效的算法来生成素数,但目前为止:
def primenum(num,val):
prime_count = 0
for test_number in range(2,n):
has_prime_factor = False
for comparison in range(2,test_number):
if test_number % comparison == 0:
has_prime_factor = True
break
if not has_prime_factor:
prime_count += 1
if prime_count % 2 == val:
yield test_number
希望这对您有所帮助:
def primenum(num, val):
primes = []
for i in range(2, num):
for j in range(2, int(i / 2) + 1):
if i % j == 0:
break
else:
primes.append(i)
for i in range(1 - val, len(primes), 2):
yield primes[i]
prime1 = list(primenum(21, 0)) # [3, 7, 13, 19]
prime2 = list(primenum(21, 1)) # [2, 5, 11, 17]
谁能帮我解决这个困扰我好几个星期的 hackerrank 问题! 我正在定义一个有 2 个参数的函数。参数'num'是一个整数,是必须生成质数的范围,参数'val'包含0或1。但它还有一个条件: 'num' 值为 21 的素数是 - 2 3 5 7 11 13 17 19
- 如果'val'的值为0,则产生值:3 7 13 19 [奇数索引值]
- 如果'val'为1,屈服值应为:2 5 11 17 [偶数索引值]
我试过下面的代码
def primenum(num, val):
for i in range(3-val,num):
if(i > 2):
for j in range(2,i):
if(i%j == 0):
break
else:
yield i
如果要在生产环境中使用它,您应该使用更有效的算法来生成素数,但目前为止:
def primenum(num,val):
prime_count = 0
for test_number in range(2,n):
has_prime_factor = False
for comparison in range(2,test_number):
if test_number % comparison == 0:
has_prime_factor = True
break
if not has_prime_factor:
prime_count += 1
if prime_count % 2 == val:
yield test_number
希望这对您有所帮助:
def primenum(num, val):
primes = []
for i in range(2, num):
for j in range(2, int(i / 2) + 1):
if i % j == 0:
break
else:
primes.append(i)
for i in range(1 - val, len(primes), 2):
yield primes[i]
prime1 = list(primenum(21, 0)) # [3, 7, 13, 19]
prime2 = list(primenum(21, 1)) # [2, 5, 11, 17]