Exemplo n.º 1
0
        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
Exemplo n.º 2
0
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)
Exemplo n.º 3
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