Решение на Генератори от Марин Делчев

Обратно към всички решения

Към профила на Марин Делчев

Резултати

  • 6 точки от тестове
  • 0 бонус точки
  • 6 точки общо
  • 4 успешни тест(а)
  • 0 неуспешни тест(а)

Код

def primes():
number = 2
while True:
if all([number % divisor for divisor in range(2, number)]):
yield number
number += 1
def get_devisor(semiprime_num):
for devisor in range(2, semiprime_num-1):
if semiprime_num % devisor == 0:
return devisor
def semiprimes():
semiprime_num = 1
while True:
devisor = get_devisor(semiprime_num)
if devisor != None:
factor = get_devisor(semiprime_num // devisor)
else:
factor = False
if factor == None:
yield semiprime_num
semiprime_num = semiprime_num + 1

Лог от изпълнението

....
----------------------------------------------------------------------
Ran 4 tests in 0.043s

OK

История (1 версия и 0 коментара)

Марин обнови решението на 02.05.2012 22:59 (преди над 8 години)

+def primes():
+ number = 2
+ while True:
+ if all([number % divisor for divisor in range(2, number)]):
+ yield number
+ number += 1
+
+
+def get_devisor(semiprime_num):
+ for devisor in range(2, semiprime_num-1):
+ if semiprime_num % devisor == 0:
+ return devisor
+
+
+def semiprimes():
+ semiprime_num = 1
+ while True:
+ devisor = get_devisor(semiprime_num)
+ if devisor != None:
+ factor = get_devisor(semiprime_num // devisor)
+ else:
+ factor = False
+ if factor == None:
+ yield semiprime_num
+ semiprime_num = semiprime_num + 1