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

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

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

Резултати

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

Код

def primes():
number = 2
while True:
if check_if_is_prime(number) == True:
yield number
number += 1
def semiprimes():
number = 4
last_semiprime = 0
while True:
for first_divisor in range(2, number):
if number % first_divisor == 0:
if check_if_is_prime(first_divisor) == True:
second_divisor = number // first_divisor
if (check_if_is_prime(second_divisor) == True
and last_semiprime != number):
last_semiprime = number
yield number
number += 1
def check_if_is_prime(number):
for divisor in range(2, number):
if number % divisor == 0:
return False
return True

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

....
----------------------------------------------------------------------
Ran 4 tests in 0.027s

OK

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

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

+def primes():
+ number = 2
+ while True:
+ if check_if_is_prime(number) == True:
+ yield number
+ number += 1
+
+
+def semiprimes():
+ number = 4
+ last_semiprime = 0
+ while True:
+ for first_divisor in range(2, number):
+ if number % first_divisor == 0:
+ if check_if_is_prime(first_divisor) == True:
+ second_divisor = number // first_divisor
+ if (check_if_is_prime(second_divisor) == True
+ and last_semiprime != number):
+ last_semiprime = number
+ yield number
+ number += 1
+
+
+def check_if_is_prime(number):
+ for divisor in range(2, number):
+ if number % divisor == 0:
+ return False
+ return True