return (s(k - 24) + s(k - 55)) % 1000000 def count_friends_of_pm(friends): s = set() pts = [524287] while pts: pt = pts.pop() for i in friends[pt]: if i in s: continue else: s.add(i) pts.append(i) return len(s) + 1 #from pygraph.classes.digraph import digraph # #gr = digraph() #gr.add_nodes(range(0, 1000000)) friends = {i: [] for i in xrange(0, 1000000)} i = 1 while True: friends[s(i)].append(s(i + 1)) l = count_friends_of_pm(friends) if l == 9900000: print i break progress(l, 9900000, 1) i += 2
from math import sqrt from euler import progress cpt = 0 L = 10 ** 9 / 3 for i in xrange(1, L+1, 2): progress(i, L, 100001) s = sqrt((3*i+1)*(i-1)) s2 = sqrt((3*i-1)*(i+1)) if int(s) == s and (s % 4 == 0): cpt += 3 * i + 1 if int(s2) == s2 and (s2 % 4 == 0): cpt += 3 * i - 1 print "WINNER" print cpt print "WINNER" #a = i + 1 #h = sqrt(i ** 2 - a ** 2 / 4) #A = a * h / 2 #A is int #<=> (a * h) % 2 == 0 #<=> (a % 2 == 0) && (h % 2 == 0) #<=> (i % 2 == 1) && (sqrt(i**2 - (i+1)**2 / 4) % 2 == 0) #<=> (i % 2 == 1) && (sqrt(i**2 - (i**2 + 2*i + 1) / 4) % 2 == 0) #<=> (i % 2 == 1) && (sqrt(3*i**2 + 2*i + 1) % 4 == 0) #<=> (i % 2 == 1) && (sqrt(3*i**2 + 2*i + 1) % 4 == 0) #<=> (i % 2 == 1) && (sqrt((i+a/2)*(i-a/2)) % 2 == 0) #<=> (i % 2 == 1) && (sqrt((i + (i+1)/2)*(i - (i+1)/2)) % 2 == 0) #<=> (i % 2 == 1) && (sqrt((3*i+1)/2*(i+1)/2) % 2 == 0) #<=> (i % 2 == 1) && (sqrt((3*i+1)*(i-1)) % 4 == 0)
from euler import progress # https://www.wolframalpha.com/input/?i=mod%28X**3%2C+13082761331670030%29+%3D+1 n = 13082761331670030 #n = 91 n3 = n ** 3 ns3 = int(n ** (1./3)) i = 1 def is_cube(n): b = ns3 while True: b3 = b ** 3 if b3 == n: return True elif b3 > n: return False b += 1 l = [] while True: p = n * i + 1 progress(p, n3, 1) if is_cube(p): l.append(int(p ** (1./3)) + 1) print "add ", p, i, p ** (1./3) if p > n3: break i += 1