コード例 #1
0
ファイル: p047.py プロジェクト: doboy/euler
def hasFactors( n, m ):
    ''' checks if it has m factors '''
    for x in primeGen( n ):
        if not n % x:
            if not m:
                return False
            m -= 1
    return not m
コード例 #2
0
ファイル: p049.py プロジェクト: doboy/euler
from utils import primeGen, digits
from operator import add

s = {}

for prime in primeGen( start=1000, end=10000 ):
    d = tuple( sorted( digits( prime ) ) )
    if d not in s:
        s[ d ] = ()
    s[ d ] += ( prime, )

for d, ps in s.iteritems():
    if len( ps ) >= 3:
        l = len( ps )
        for i in xrange( l ):
            for j in xrange( i + 1, l ):
                for k in xrange( i + j, l ):
                    p1, p2, p3 = ps[ i ], ps[ j ], ps[ k ]
                    if p3 - p2 == p2 - p1 and p1 != 1487:
                        print reduce( add, map( str, ( p1, p2, p3 ) ) )
コード例 #3
0
ファイル: p027.py プロジェクト: doboy/euler
def quadGen():
    for b in primeGen( 1000 ):
        for a in xrange( 1000 ):
            yield primeLen( a, b ), a, b
            yield primeLen( -a, b ), -a, b
コード例 #4
0
ファイル: p046.py プロジェクト: doboy/euler
def Goldbach( c ):
    for p in primeGen( c ):
        if isEven( c - p ) and isSquare( ( c - p ) / 2 ):
            return True
コード例 #5
0
ファイル: p026.py プロジェクト: doboy/euler
    decimals = []
    
    # The value under the bar
    dividianList = []
    dividianSet = set()

    dividian = 10
    while dividian not in dividianSet:
        dividianList.append( dividian )
        dividianSet.add( dividian )

        dividee = dividian // divisor
        remainder = dividian % divisor
        decimals.append( dividee )

        if not remainder:
            return 0

        dividian = remainder * 10

    i = -1
    count = 1
    while dividianList[ i ] != dividian:
        count += 1
        i -= 1
    return count

print max( ( cycleLen( i ), i ) for i in primeGen( 1000 ) )[ 1 ]

#RELOOK
コード例 #6
0
ファイル: p071.py プロジェクト: doboy/euler
from utils import primeGen

for t in primeGen():
    if t > 8:
        break
    d = t

n = d * 3 // 7
while float(n + 1) / d < float(3) / 7:
    n += 1

print n, d
コード例 #7
0
ファイル: p069.py プロジェクト: doboy/euler
from utils import primeGen, product

n, g = 1, primeGen()
t = next( g )

while n * t < 10 ** 6:
    n *= t
    t = next( g )

print n
コード例 #8
0
ファイル: p123.py プロジェクト: doboy/euler
from utils import primeGen

gen = primeGen()
i, primeI = 1, next( gen )

while 2 * primeI * i < 10 ** 9:
    next( gen )
    primeI = next( gen )
    i += 2
print i

# RELOOK