- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
SIEVE_SIZE = 4096
def primes():
s = [False] * 2 + [True] * (SIEVE_SIZE - 2)
primel = []
# Bootstrap sieve
for i in xrange(SIEVE_SIZE):
if s[i]:
yield i
primel.append(i)
j = i
while j < SIEVE_SIZE:
s[j] = False
j += i
# Main loop
seg = SIEVE_SIZE
while True:
s = [True] * SIEVE_SIZE
for p in primel:
j = (seg / p) * p - seg
if j < 0:
j += p
while j < SIEVE_SIZE:
s[j] = False
j += p
# Yield next set of primes
for p in map(lambda x: x[0], filter(lambda x: x[1],
enumerate(s, seg))):
yield p
primel.append(p)
seg += SIEVE_SIZE
pg = iter(primes())
test_primes = []
p = next(pg)
while p < 1000:
test_primes.append(p)
p = next(pg)
ps = set(test_primes)
ps.add(p)
pm = p
def is_prime(n):
global pm
while pm < n:
pm = next(pg)
ps.add(pm)
return n in ps
def get_formula_length(a, b):
n = 1
t = lambda n: n * n + a * n + b
while t(n) > 0 and is_prime(t(n)):
n += 1
return n
print max((get_formula_length(a, b), a * b) for b in test_primes
for a in xrange(-999, 1000))[1]
bormand 23.05.2012 13:40 # +3
Хотя для таких маленьких n и большого числа проверок - может и правда быстрее.
unu-foja 23.05.2012 15:02 # 0
unu-foja 23.05.2012 15:30 # +1
bormand 23.05.2012 14:06 # 0
Учетки от PE под рукой не было, ответ проверить нечем :(
bormand 23.05.2012 14:21 # 0
И primes2 втопку, все равно b не может быть отрицательным.
TarasB 23.05.2012 16:48 # 0
if j < 0:
j += p
В питоне нету оператора остатка от деления?
bormand 23.05.2012 17:01 # +1
TheHamstertamer 23.05.2012 18:04 # +2
TarasB 23.05.2012 20:42 # 0
Вы оба так отвечаете, будто то ли не поняли мой тонкий намёк, то ли я неверно понял, что эти три строки возвращают остаток от деления.
Lure Of Chaos 23.05.2012 20:50 # 0
TarasB 23.05.2012 21:30 # 0
bormand 24.05.2012 06:21 # 0
TarasB 24.05.2012 17:59 # +1
bormand 24.05.2012 18:10 # 0
Lure Of Chaos 23.05.2012 20:39 # 0
пиххипишнег писал, не иначе.
wvxvw 24.05.2012 13:07 # 0
bormand 24.05.2012 13:28 # 0