def solution(): """ Bryukh's solution >>> solution() [148748178147, 296962999629] """ res = [] pr_list = eratosthenes(10000) pr_list = pr_list[pr_list.index(1009):] while pr_list: pr = pr_list[0] pr_per = [ int(''.join(var)) for var in permutations(str(pr)) if int(''.join(var)) in pr_list ] pr_per = sorted(list(set(pr_per))) for x in pr_per: pr_list.remove(x) if len(set(pr_per)) < 3: continue for i in xrange(len(pr_per) - 2): for j in xrange(i + 1, len(pr_per) - 1): third = pr_per[j] + (pr_per[j] - pr_per[i]) if third in pr_per: res.append(pr_per[i] * (10**8) + pr_per[j] * (10**4) + third) return res
def solution2(value=CONST): """ Bryukh's solution four time calculation in one >>> solution(2) 14 >>> solution(3) 644 """ def count_div(numb, lst): res = 0 for pr in lst: if not numb % pr: res += 1 if pr > numb/2: if not res: res = 1 break return res pr_list = eratosthenes(100000) x = 10 x_divisors = [0] * value for i in range(value): x_divisors[i] = count_div(x+i, pr_list) while True: if all([xd==value for xd in x_divisors]): break x += 1 x_divisors = x_divisors[1:] + [count_div(x+value-1, pr_list)] return x
def solution(): """ Bryukh's solution """ prime_list = eratosthenes(1000000) res = [] for pr in prime_list: if (all([(int(str(pr)[i:]) in prime_list and int(str(pr)[:i+1]) in prime_list) for i in xrange(len(str(pr)))])): res.append(pr) return sum(res[-11:])
def solution(): """ Bryukh's solution """ prime_list = eratosthenes(1000000) res = [] for pr in prime_list: if (all([(int(str(pr)[i:]) in prime_list and int(str(pr)[:i + 1]) in prime_list) for i in xrange(len(str(pr)))])): res.append(pr) return sum(res[-11:])
def solution(value=CONST): """ Bryukh's solution n/φ(n) = (1-1/p1)(1-1/p2)... so maximum is maximum prime divisors >>> solution() 510510 """ prlist = eratosthenes(100) res = 1 for pr in prlist: if res * pr > value: return res res *= pr
def solution(value=CONST): """ Bryukh's solution n/φ(n) = (1-1/p1)(1-1/p2)... so maximum is maximum prime divisors >>> solution() 510510 """ prlist = eratosthenes(100) res = 1 for pr in prlist: if res*pr > value: return res res *= pr
def solution(value=CONST): """ Bryukh's solution We can check only 3 repeat numbers >>> solution() """ prime_lst = [pr for pr in eratosthenes(999999) if repeating_digit(pr, 3)] for prime in prime_lst: templates = find_template(prime, 3) #print prime, template for temp in templates: gen_lst = generate_numb(prime, temp) count = sum([1 for gen in gen_lst if gen in prime_lst]) if count >= 8: return prime
def solution(max_value=CONST): """ Bryukh's solution """ prime_lst = eratosthenes(max_value) res = 0 len_res = 0 for start in xrange(10): temp = 0 for i in prime_lst[start:]: temp += i if temp > max_value: break if temp in prime_lst: if i - start > len_res: len_res = i - start res = temp return res
def solution(): """ Bryukh's solution >>> solution() 5777 """ n = 7 prime_lst = eratosthenes(100000) while True: n += 2 if n in prime_lst: continue for pr in prime_lst: if n < pr: return n diff = n - pr if not diff % 2 and sqrt(diff // 2) == int(sqrt(diff // 2)): break
def solution(): """ Bryukh's solution >>> solution() 5777 """ n = 7 prime_lst = eratosthenes(100000) while True: n += 2 if n in prime_lst: continue for pr in prime_lst: if n < pr: return n diff = n - pr if not diff % 2 and sqrt(diff//2) == int(sqrt(diff//2)): break
def solution1(value=CONST): """ Bryukh's solution Try without primedivisors >>> solution(2) 14 >>> solution(3) 644 """ pr_list = eratosthenes(100000) x = 10 while True: x_divisors = [0] * value for i in range(value): for pr in pr_list: if not (x+i) % pr: x_divisors[i] += 1 if pr > (x+i)/2: break if all([xd==value for xd in x_divisors]): break x += 1 return x
def solution(): """ Bryukh's solution >>> solution() 26033 """ prlist = eratosthenes(10000) for p1 in prlist[:-4]: for p2 in prlist[prlist.index(p1)+1:-3]: if not_conc_prime(p1, p2): continue for p3 in prlist[prlist.index(p2)+1:-2]: if not_conc_prime(p1, p3) or not_conc_prime(p2, p3): continue for p4 in prlist[prlist.index(p3)+1:-1]: if (not_conc_prime(p1, p4) or not_conc_prime(p2, p4) or not_conc_prime(p3, p4)): continue for p5 in prlist[prlist.index(p4)+1:]: if (not_conc_prime(p1, p5) or not_conc_prime(p2, p5) or not_conc_prime(p3, p5) or not_conc_prime(p4, p5)): continue return sum((p1, p2, p3, p4, p5))
def solution(): """ Bryukh's solution >>> solution() 26033 """ prlist = eratosthenes(10000) for p1 in prlist[:-4]: for p2 in prlist[prlist.index(p1) + 1:-3]: if not_conc_prime(p1, p2): continue for p3 in prlist[prlist.index(p2) + 1:-2]: if not_conc_prime(p1, p3) or not_conc_prime(p2, p3): continue for p4 in prlist[prlist.index(p3) + 1:-1]: if (not_conc_prime(p1, p4) or not_conc_prime(p2, p4) or not_conc_prime(p3, p4)): continue for p5 in prlist[prlist.index(p4) + 1:]: if (not_conc_prime(p1, p5) or not_conc_prime(p2, p5) or not_conc_prime(p3, p5) or not_conc_prime(p4, p5)): continue return sum((p1, p2, p3, p4, p5))
def solution(): """ Bryukh's solution >>> solution() [148748178147, 296962999629] """ res = [] pr_list = eratosthenes(10000) pr_list = pr_list[pr_list.index(1009):] while pr_list: pr = pr_list[0] pr_per = [int(''.join(var)) for var in permutations(str(pr)) if int(''.join(var)) in pr_list] pr_per = sorted(list(set(pr_per))) for x in pr_per: pr_list.remove(x) if len(set(pr_per)) < 3: continue for i in xrange(len(pr_per)-2): for j in xrange(i+1, len(pr_per)-1): third = pr_per[j] + (pr_per[j] - pr_per[i]) if third in pr_per: res.append(pr_per[i]*(10**8) + pr_per[j]*(10**4) + third) return res