Example #1
0
 def test_trunc_primes(self):
     primes = Primes()
     assert primes.truncatable(3797)
     primes = Primes()
     trunc = []
     for prime in primes:
         if primes.truncatable(prime):
             trunc.append(prime)
         if len(trunc) == 10:
             assert sum(trunc) == 8920
             break
Example #2
0
 def test_factors(self):
     primes = Primes()
     assert primes.factors(0) == []
     assert primes.factors(1) == []
     assert primes.factors(2) == [2]
     assert primes.factors(6) == [2, 3]
     assert primes.factors(8) == [2, 2, 2]
     assert primes.factors(29) == [29]
Example #3
0
def pe41():
    """
    >>> pe41()
    7652413
    """
    primes = Primes(1000000)
    for perm in permutations(range(7, 0, -1)):
        n = list_num(perm)
        if primes.is_prime(n):
            return n
    return -1
def generate_code(n, k):
    primes = Primes(n + k)
    primes_list = primes.primes_list
    #primes_list=primes.primes_3mod4()
    print(primes_list)

    words = gen_words(primes_list[0:k])
    primes = primes_list[k:n + k]
    print(primes_list)
    print(primes)
    code = [[legendre_symbol(w, p) for p in primes] for w in words]
    return code
def generate_jacobi_code(n, k):
    nlog = int(math.log(n, 2))
    primes = Primes(nlog + k + 1)
    primes_list = primes.primes_list
    #primes_list=primes.primes_3mod4()
    print(primes_list)

    words = gen_words(primes_list[0:k])
    primes = primes_list[k:nlog + k]
    encoders = gen_words(primes)
    print(primes_list)
    print(encoders)
    code = [[jacoby_symbol(w, m) for m in encoders] for w in words]
    return code
Example #6
0
 def test_primes(self):
     primes = Primes()
     assert 0 not in primes
     assert 1 not in primes
     taketen = primes[1:11]
     correct = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29]
     taketen = list(taketen)
     assert taketen == correct
     for x in range(1, 11):
         assert primes[x] == correct[x - 1]
     assert 104744 not in primes
     assert primes[10001] == 104743
     itr = iter(primes)
     for _ in range(10100):
         next(itr)
     assert list(primes.countdown(29))[::-1] == correct
Example #7
0
def main():
    a= Primes(2, 100000, 2000)
    p = random.choice(a)
    q = random.choice(a)
    #print("随机生成两个素数p和q. p=",p," q=",q)
    n = p * q
    s = (p-1)*(q-1)
    #print("The p is ", p)
    #print("The q is ", q)
    #print("The n(p*q) is ",n)
    e = co_prime(s)
    #e = 5
    #print("根据e和(p-1)*(q-1))互质得到: e=", e)
    d = find_d(e,s)
    #print("根据(e*d) 模 ((p-1)*(q-1)) 等于 1 得到 d=", d)
    #print("公钥:   n=",n,"  e=",e)
    #print("私钥:   n=",n,"  d=",d)
    pbvk = (n,e,d)
    return pbvk
Example #8
0
def pe27():
    """
    >>> pe27()
    (-59231, (-61, 971, 71))
    """
    m = (0, 0, 0)
    primes = Primes(15000)
    for a in range(-999, 1000):
        for b in range(max(2, 1 - a), 1000):
            n, cnt = 0, 0
            while 1:
                p = n * (n + a) + b
                if primes.is_prime(p):
                    cnt += 1
                else:
                    break
                n += 1
            if cnt > m[2]:
                m = (a, b, cnt)
    return (m[0] * m[1], m)
Example #9
0
#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
Solve project euler 58

Investigate the number of primes
that lie on the diagonals of the spiral grid.
"""

from primes import Primes

primes = Primes(30000)


def pe58(p=0.1):
    """
    >>> pe58()
    26241
    """
    l = 7
    ps = 8
    d = 49
    ds = 13
    while ps > p * ds:
        l += 2
        i = l - 1
        ps += primes.is_prime(d + i) + primes.is_prime(
            d + 2 * i) + primes.is_prime(d + 3 * i)
        d += i << 2
        ds += 4
    return l
Example #10
0
 def test_totient(self):
     correct = [(2, 1), (3, 2), (4, 2), (5, 4), (6, 2), (7, 6), (8, 4),
                (9, 6), (10, 4), (4079147, 4074720)]
     primes = Primes()
     for (k, v) in correct:
         assert primes.totient(k) == v
Example #11
0
def primes():
    return Primes()
Example #12
0
 def test_is_circular(self):
     primes = Primes()
     assert primes.is_circular(2)
     assert primes.is_circular(971)
     assert not primes.is_circular(999953)
Example #13
0
'''
import maths
primesd = maths.primesd(10**6)
primes = [x for x in primesd.keys() if primesd.get(x) is 1]
'''
from primes import Primes
primes = Primes(10**6)
ps = primes.pList()


def Euler_50():
    high = 0
    for i in range(10):
        sums = 0
        x = 0
        if i % 10000 == 0:
            print('new', i)
        for j in ps[i:]:
            x += 1
            sums += j
            if sums > 10**6: break
            if primes.isPrime(sums):
                if x > high:
                    high = x
                    maxs = sums
                #;print('high:',high,'sum:',sums,'i:',primes.pList(i))
    return maxs


if __name__ == '__main__':
    print(Euler_50())
Example #14
0
 def button_handle_random(self, event):  # 按钮(随机素数)事件
     a = Primes(2, 5000, 1000)
     p = random.choice(a)
     q = random.choice(a)
     self.content_P.set("%s" % p)
     self.content_Q.set("%s" % q)
Example #15
0
def empty_Primes():
    from primes import Primes
    new_primes = Primes()
    return new_primes
Example #16
0
def test_primes_slice():
    """Test method first returns correct slice."""
    from primes import Primes
    Primes = Primes()
    assert Primes.first(20)[-5:] == [53, 59, 61, 67, 71]
Example #17
0
 def test_consecutive_sum_max(self):
     primes = Primes()
     assert (2 == primes.consecutive_sum_max(5))
     assert (0 == primes.consecutive_sum_max(11))
     assert (6 == primes.consecutive_sum_max(41))
Example #18
0
def test_prime_80thth_element():
    """Test method first returns correct element."""
    from primes import Primes
    Primes = Primes()
    assert Primes.first(80)[79] == 409
Example #19
0
def test_prime_100th_element():
    """Test method first returns correct element."""
    from primes import Primes
    Primes = Primes()
    assert Primes.first(100)[99] == 541
Example #20
0
import sys
sys.path.append('C:\\Users\\bob\\comp-sci\\project-euler\\toolkit')
from primes import Primes

p = Primes(1000000)
is_prime = p.is_prime
p_list = p.primes_list

def solve():
    most_terms, prime = 0, 0
    for terms in range(1, 547):
        for i in range(len(p_list) - terms):
            p_sum = sum(p_list[i:i+terms])
            if p_sum > 1000000:
                break
            if is_prime(p_sum):
                most_terms, prime = terms, p_sum
                break
    return prime

Example #21
0
 def setUp(self):
     self.primes = Primes(100)
Example #22
0
 def test_primes_1000th_prime_is_7919(self):
     s = Primes(10000)
     self.assertEqual(s.first(1000)[-1], 7919)
"""
The prime factors of 13195 are 5, 7, 13 and 29.
What is the largest prime factor of the number 600851475143 ?
"""

from primes import Primes

primes = Primes(10000)
print(list(primes.prime_factors((600851475143))))
Example #24
0
 def test_consecutive_sum_max_length(self):
     primes = Primes()
     assert primes.consecutive_sum_max_length(50) == (41, 6)
Example #25
0
#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
What is the smallest odd composite
that cannot be written as the sum of a prime and twice a square?
"""

from primes import Primes

_SQ = [i * i << 1 for i in range(100)]
primes = Primes()


def is_goldbach(n):
    res = False
    for i in range(100):
        t = n - _SQ[i]
        if t < 2:
            break
        if primes.is_prime(t):
            res = True
            break
    return res


def pe46():
    """
    >>> pe46()
    5777
    """
    limit = 10000
Example #26
0
import timeit
from triangular import count_factors
from triangular import gen_triangular_number
from primes import Primes

i = 1

while True:
    i +=1
    pobj = Primes(i)
    t = gen_triangular_number(i)
    factors = count_factors(pobj, t)
    if factors >= 500:
        print ("factors", factors, "t", t)
        break
Example #27
0
#!/usr/bin/python3
'''
Primes generator using Sieve of Eratosthenes
Use -l to limit output or use Ctrl+C to interrupt.
'''

import argparse
import sys
from primes import Primes

argument_parser = argparse.ArgumentParser('Primes generator')
argument_parser.add_argument('-l', dest='limit', type=int, default=None)
limit = argument_parser.parse_args().limit

prime_numbers = Primes()
for prime in prime_numbers:
    if limit and prime > limit:
        sys.exit()
    print(prime)
Example #28
0
def ListOfPrimes(num):
    listofPrimenumbers = []
    for i in range(2, num):
        if Primes(i):
            listofPrimenumbers.append(i)
    return listofPrimenumbers