Решение на Генератори от Веселин Павлов

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

Към профила на Веселин Павлов

Резултати

  • 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():
number = 4
while True:
for i in range(2, number):
if number % i == 0:
if all([i % divisor for divisor in range(2, i)]):
if all([int(number / i) % divisor \
for divisor in range(2, int(number / i))]):
yield number
break
number += 1

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

....
----------------------------------------------------------------------
Ran 4 tests in 0.073s

OK

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

Веселин обнови решението на 02.05.2012 22:09 (преди почти 12 години)

+def primes():
+ number = 2
+ while True:
+ if all([number % divisor for divisor in range(2, number)]):
+ yield number
+ number += 1
+
+
+def semiprimes():
+ number = 4
+ while True:
+ for i in range(2, number):
+ if number % i == 0:
+ if all([i % divisor for divisor in range(2, i)]):
+ if all([int(number / i) % divisor \
+ for divisor in range(2, int(number / i))]):
+ yield number
+ break
+ number += 1