Решение на Генератори от Димитър Павлов

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

Към профила на Димитър Павлов

Резултати

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

Код

def trial_division(integer):
return all([integer % x for x in range(2, integer)])
def is_semiprime(integer):
prime_a = 2
while True:
if prime_a == integer:
return False
if (not integer % prime_a and
trial_division(prime_a) and
trial_division(int(integer / prime_a))):
return True
prime_a += 1
def primes():
curent = 2
while True:
if trial_division(curent):
yield curent
curent += 1
def semiprimes():
while True:
semiprime = 2
while True:
semiprime += 1
if is_semiprime(semiprime):
yield semiprime

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

....
----------------------------------------------------------------------
Ran 4 tests in 0.069s

OK

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

Димитър обнови решението на 25.04.2012 14:19 (преди над 12 години)

+def trial_division(integer):
+ return all([integer % x for x in range(2, integer)])
+def is_semiprime(integer):
+ prime_a = 2
+ while True:
+ if prime_a == integer:
+ return False
+ if (not integer % prime_a and
+ trial_division(prime_a) and
+ trial_division(int(integer / prime_a))):
+ return True
+ prime_a += 1
+def primes():
+ curent = 2
+ while True:
+ if trial_division(curent):
+ yield curent
+ curent += 1
+def semiprimes():
+ while True:
+ semiprime = 2
+ while True:
+ semiprime += 1
+ if is_semiprime(semiprime):
+ yield semiprime
+
+