Решение на Генератори от Илия Велев

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

Към профила на Илия Велев

Резултати

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

Код

def primes():
number = 2
while True:
if all([number % i for i in range(2, (number // 2) + 1)]):
yield number
number += 1
def semiprimes():
primes_list = []
iterator = primes()
number = 4
prim = next(iterator)
oldprim = prim
while True:
while number > prim:
primes_list.append(prim)
prim = next(iterator)
if oldprim != prim:
semiprimes_set = {i * j for i in primes_list for j in primes_list}
oldprim = prim
if number in semiprimes_set:
yield number
number = number + 1

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

....
----------------------------------------------------------------------
Ran 4 tests in 0.055s

OK

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

Илия обнови решението на 02.05.2012 23:56 (преди над 8 години)

+def primes():
+ number = 2
+ while True:
+ if all([number % i for i in range(2, (number // 2) + 1)]):
+ yield number
+ number += 1
+
+
+def semiprimes():
+ primes_list = []
+ iterator = primes()
+ number = 4
+ prim = next(iterator)
+ oldprim = prim
+ while True:
+ while number > prim:
+ primes_list.append(prim)
+ prim = next(iterator)
+ if oldprim != prim:
+ semiprimes_set = {i * j for i in primes_list for j in primes_list}
+ oldprim = prim
+ if number in semiprimes_set:
+ yield number
+ number = number + 1