コード例 #1
0
def main(limit):
    rv = 0
    for p in Primes(limit).gen():
        if p > limit:
            break
        if not isFactor(p):
            rv += p
    return rv
コード例 #2
0
def main(limit):
    primes = Primes(limit)

    def circular(p):
        d = digits(p)
        return all(
            primes.isPrime(num(d[i:] + d[:i])) for i in range(1, len(d)))

    return sum(map(circular, takewhile(lambda n: n < limit, primes.gen())))
コード例 #3
0
def main(limit=28123):
    primes = Primes(limit)
    abundant = [n for n in range(limit + 1) if n < primes.sumDivisors(n)]
    abundantSet = set(abundant)

    def can(n):
        for a in abundant:
            if 2 * a > n:
                break
            if n - a in abundantSet:
                return True
        return False

    return sum(n for n in range(limit + 1) if not can(n))
コード例 #4
0
def main(N, solns):
    primes = Primes(N)
    rv = 0

    for n in range(N):
        count = 0
        for A in primes.divisors(n):
            if A * A < 3 * n and (A + n // A) % 4 == 0:
                count += 1
                if count > solns:
                    break

        if count == solns:
            rv += 1

    return rv
コード例 #5
0
from lib import Primes

primes = Primes()

def main(limit):
	mem = [False] * limit
	for pa in primes.gen():
		sq = pa * pa
		if sq > limit:
			break
		for pb in primes.gen():
			cu = pb * pb * pb
			if sq + cu > limit:
				break
			for pc in primes.gen():
				fo = pc * pc * pc * pc
				tot = sq + cu + fo
				if tot > limit:
					break
				mem[tot] = True
	return sum(mem)

if __name__ == '__main__':
	print(main(50000000)) # 1097343
コード例 #6
0
from lib import Primes 
import heapq

primeGen = Primes()

def main(e, m):
  factors = list(map(primeGen.get, range(e)))
  heapq.heapify(factors)
  n = 1
  for _ in range(e):
    factor = factors[0]
    n = n * factor % m
    heapq.heappushpop(factors, factor ** 2)
  return n

if __name__ == '__main__':
  print(main(500500, 500500507))  # 35407281
コード例 #7
0
ファイル: 214.py プロジェクト: VBakhila/project-euler-python
from lib import numLen, Primes
from collections import defaultdict

prime = Primes()


class chainLenObj():
    def __init__(self, limit):
        self.limit = limit
        self.mem = [None] * limit
        self.mem[1] = 1

    def get(self, n):
        if self.mem[n] == None:
            self.mem[n] = 1 + self.get(prime.phi(n))
        return self.mem[n]

    def gen(self, length):
        for p in prime.gen():
            if p >= self.limit:
                break
            print(p)
            if self.get(p) == length:
                yield p


def main(limit, length):
    clo = chainLenObj(limit)
    return sum(clo.gen(length))