Решение на Генератори от Борис Величков

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

Към профила на Борис Величков

Резултати

  • 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 semiprimes():
semiprime_number = 1
while True:
factor = get_factor(semiprime_number)
if factor and get_factor(semiprime_number // factor) == None:
yield semiprime_number
semiprime_number += 1
def get_factor(semiprime_number):
for index in range(2, semiprime_number-1):
if semiprime_number % index == 0:
return index

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

....
----------------------------------------------------------------------
Ran 4 tests in 0.049s

OK

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

Борис обнови решението на 24.04.2012 16:36 (преди почти 12 години)

+def primes():
+ number = 2
+ while True:
+ if all([number % divisor for divisor in range(2, number)]):
+ yield number
+ number += 1
+
+
+def semiprimes():
+ semiprime_number = 1
+ while True:
+ factor = get_factor(semiprime_number)
+ if factor and get_factor(semiprime_number // factor) == None:
+ yield semiprime_number
+ semiprime_number += 1
+
+
+def get_factor(semiprime_number):
+ for index in range(2, semiprime_number-1):
+ if semiprime_number % index == 0:
+ return index