Решение на Генератори от Ивайло Мариновски

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

Към профила на Ивайло Мариновски

Резултати

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

Код

from math import sqrt
def isPrime(x):
for i in range(2,int(sqrt(x)+1)):
if not x%i:
return False
else:
return True
def primes():
p=2
while True:
if isPrime(p):
yield p
p+=1
def semiprimes():
p=4
while True:
for i in range(2,int(p/2)+1):
if not p%i:
if isPrime(i):
if isPrime(p/i):
yield p
break
else:
break
else:
break
p+=1

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

....
----------------------------------------------------------------------
Ran 4 tests in 0.007s

OK

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

Ивайло обнови решението на 03.05.2012 13:50 (преди почти 12 години)

+from math import sqrt
+
+def isPrime(x):
+ for i in range(2,int(sqrt(x)+1)):
+ if not x%i:
+ return False
+ else:
+ return True
+
+def primes():
+ p=2
+ while True:
+ if isPrime(p):
+ yield p
+ p+=1
+
+def semiprimes():
+ p=4
+ while True:
+ for i in range(2,int(p/2)+1):
+ if not p%i:
+ if isPrime(i):
+ if isPrime(p/i):
+ yield p
+ break
+ else:
+ break
+ else:
+ break
+ p+=1