Решение на Генератори от Дейвид Танков

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

Към профила на Дейвид Танков

Резултати

  • 5 точки от тестове
  • 0 бонус точки
  • 5 точки общо
  • 3 успешни тест(а)
  • 1 неуспешни тест(а)

Код

def primecheck(number):
number *= 1.0
if number % 2 == 0 and number != 2 or number % 3 == 0 and number != 3:
return False
for divs in range(1, int((number ** 0.5 + 1) / 6.0 + 1)):
if number %(6 * divs - 1) == 0:
return False
if number %(6 * divs + 1) == 0:
return False
return True
def primes():
yield 2
number = 3
while True:
if ( primecheck(number) ):
yield number
number += 1
def semiprimes():
tempstore = [x for x in range(2, 100) if primecheck(x)]
results = [x * y for x in tempstore for y in tempstore]
result = sorted(set(results))
for num in result:
yield num
#Kire haresva li ti krupkata

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

...F
======================================================================
FAIL: test_thousands_of_semi_primes (__main__.PrimesTest)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/tmp/test20120627-11891-j5upd7", line 2029, in test_thousands_of_semi_primes
    self.assertEqual(ten_thousand_semiprimes[i], next(primes))
AssertionError: 202 != 203

----------------------------------------------------------------------
Ran 4 tests in 0.012s

FAILED (failures=1)

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

Дейвид обнови решението на 02.05.2012 15:16 (преди почти 12 години)

+def primecheck(number):
+ number *= 1.0
+ if number % 2 == 0 and number != 2 or number % 3 == 0 and number != 3:
+ return False
+ for divs in range(1, int((number ** 0.5 + 1) / 6.0 + 1)):
+ if number %(6 * divs - 1) == 0:
+ return False
+ if number %(6 * divs + 1) == 0:
+ return False
+ return True
+
+def primes():
+ yield 2
+ number = 3
+ while True:
+ if ( primecheck(number) ):
+ yield number
+ number += 1
+
+def semiprimes():
+ tempstore = [x for x in range(2, 100) if primecheck(x)]
+ results = [x * y for x in tempstore for y in tempstore]
+ result = sorted(set(results))
+ for num in result:
+ yield num
+ #Kire haresva li ti krupkata