示例#1
0
def isASquare(a,p,d=0,log=False):
    space = "  " * d
    if log: print(f"{space}({a}/{p})",end = " => ")
    if a == 0: 
        if log: print("0")
        return 0
    if a == 1: 
        if log: print(1)
        return 1
    if a == -1: 
        if log: print(-1)
        return (-1)**(p-1 // 2)
    if a == 2: 
        res = (-1)**((p**2 - 1) // 8)
        if log: print(res)
        return res
    if a >= p: 
        if log: print()
        return isASquare(a % p, p,d+1, log)
    if not(isPrime(a)): 
        print(f"factoring {a}")
        aFactored = pFactor(a)
        res = 1
        for factor in aFactored:
            for _ in range(aFactored[factor]):
                if log: print()
                res *= isASquare(int(factor),p,d+1, log)
        return res
    if log: print(f"* {((-1)**(((p-1)//2) * ((a-1)//2)))}")
    return isASquare(p,a,d+1,log) * ((-1)**(((p-1)//2) * ((a-1)//2)))
示例#2
0
def characteristic(base):
    if isPrime(base):
        return base
    factors = pFactor(base)
    if len(factors) != 1:
        return None
    return int(next(iter(factors)))
示例#3
0
def nthPrime(n):
    found = 0
    guess = 0
    while found <= n:
        guess += 1
        if isPrime(guess):
            found += 1
    return guess
示例#4
0
def read_file_text():
    data = []
    with open("primeNumber.txt", "r") as f:
        line = f.readline()
        while line:
            line = line.strip()
            data.append(isPrime(int(line)))
            line = f.readline()
    f.close()
    return data
示例#5
0
def isTrunctPrime(n):
    number = []
    for i in str(n):
        number.append(int(i))
    test_num = number[:]
    while len(test_num) > 0:
        if isPrime(int(''.join(map(str, test_num)))) == False:
            return False
        else:
            test_num.pop()
    test_num = number[:]
    test_num.pop(0)
    while len(test_num) > 0:
        if isPrime(int(''.join(map(str, test_num)))) == False:
            return False
        else:
            test_num.pop(0)

    return True
示例#6
0
def factor(n):
    '''pollard's rho algorithm'''
    if n < 1:
        raise Exception('[Error]: {} is less than 1'.format(n))
    if n == 1:
        return []
    if isPrime(n):
        return [n]
    fact = 1
    cycle_size = 2
    x = x_fixed = 2
    c = randint(1, n)
    while fact == 1:
        for i in range(cycle_size):
            if fact > 1:
                break
            x = (x * x + c) % n
            if x == x_fixed:
                c = randint(1, n)
                continue
            fact = gcd(x - x_fixed, n)
        cycle_size *= 2
        x_fixed = x
    return factor(fact) + factor(n // fact)
示例#7
0
from isPrime import isPrime
'''
for n in range(40):
    p = n**2 + n + 41
    print(p, isPrime(p))

for n in range(80):
    p = n**2 - 79*n + 1601
    print(p, isPrime(p))
'''

A = 0
B = 0
N = 0
for a in range(-1000, 1001):
    for b in range(-1000, 1001):
        n = 0
        p = n**2 + a * n + b
        while isPrime(p):
            n += 1
            p = n**2 + a * n + b
        if n > N:
            A = a
            B = b
            N = n

print(A * B)
示例#8
0
from isPrime import isPrime

for x in range(__ITERS__):
    isPrime(x)

print('end')
示例#9
0
 def test_prime(self):
     self.assertEqual(isPrime(19), True)
示例#10
0
from isPrime import isPrime

limit = 2000000
sumPrime = 5
n = 5

##for n in range(5, limit,2):
while n <= limit:
    if isPrime(n):
        sumPrime = sumPrime + n
        n = n + 2
    elif n <= limit and isPrime(n):
        sumPrime = sumPrime + n
        n = n + 4
    else:
        n = n + 2

print sumPrime
示例#11
0
def main():
    num = int(input("Enter a number: "))
    if isPrime.isPrime(num):
        print("This number is prime")
    else:
        print("This is not prime number")
示例#12
0
 def test_nonprime(self):
     self.assertEqual(isPrime(12), False)
示例#13
0
 def test_is_a_prime(self):
     a = [2, 3, 5, 7, 11, 31, 59, 15485863]
     for i in a:
         self.assertTrue(isPrime(i))
示例#14
0
#Problem 10

from isPrime import isPrime

u=input('Upper limit: ')
s=0

for i in xrange(1,u+1):
    if isPrime(i)==True:
        s=s+i

print s
示例#15
0
import isPrime
while True:
    print('Please enter the number of digits your prime should have.')
    length = int(input())
    num = '9' * length
    while len(str(num)) != length - 1:
        if isPrime.isPrime(num) == True and length == len(str(num)):
            f = open('prime.txt', 'w')
            f.write(str(num))
            f.close()
            print(num)
            break
        else:
            num = int(num)
            num -= 1
示例#16
0
'''
The prime factors of 13195 are 5, 7, 13 and 29.
What is the largest prime factor of the number 600851475143 ?
Execution time = 0.232 secs
'''

from isPrime import isPrime
import time
n = int(input("Enter number to find largest prime factor: "))
start = time.time()
i = 2
largest = 0
while(i*i<n):
    if not (n%i):
        if(isPrime(i)):
            largest = i
        if(isPrime(n/i)):
            largest = n/i
            break
    i += 1

print(largest)
end = time.time()
print("Executed in {} secs".format(end - start))
示例#17
0
#Problem 7

#By listing the first six prime numbers: 2, 3, 5, 7, 11, and 13,
#we can see that the 6th prime is 13.
#What is the 10 001st prime number?

from isPrime import isPrime

n=input('Upper Limit: ')
i=0
j=0
while i!=n:
    j=j+1
    if isPrime(j):
        i=i+1

print j
示例#18
0
from isPrime import isPrime

limit = 2000000
sumPrime = 5
n = 5

##for n in range(5, limit,2):
while n <= limit:
    if isPrime(n):
        sumPrime = sumPrime + n
        n = n + 2
    elif n <= limit and isPrime(n):
        sumPrime = sumPrime + n
        n = n + 4
    else:
        n = n + 2    

print sumPrime
    
示例#19
0
#We shall say that an n-digit number is pandigital if it makes use of all the digits 1 to n exactly once. For example,
#2143 is a 4-digit pandigital and is also prime.
#What is the largest n-digit pandigital prime that exists?
from itertools import permutations
from isPrime import isPrime
x = [1, 12, 123, 1234, 12345, 123456, 1234567, 12345678, 123456789]
permut = []

for y in x:
    perm = [''.join(p) for p in permutations(str(y))]
    permut = permut + perm
prime = 0
for x in permut:
    if isPrime(int(x)) == True and int(x) > int(prime):
        prime = x
        print(x)

print(prime)
示例#20
0
 def test_is_not_prime(self):
     a = [9, 81, 140, 200, -2]
     for i in a:
         self.assertFalse(isPrime(i))
示例#21
0
 def test_input_is_not_number(self):
     a = ["a", "1"]
     for i in a:
         self.assertFalse(isPrime(i))
示例#22
0
def rwh_primes(n):
    # https://stackoverflow.com/questions/2068372/fastest-way-to-list-all-primes-below-n-in-python/3035188#3035188
    """ Returns  a list of primes < n """
    sieve = [True] * int(n / 2)
    for i in range(3, int(n**0.5) + 1, 2):
        if sieve[int((i - 1) / 2)]:
            sieve[int(i * i / 2)::i] = [False] * int((n - i * i - 1) /
                                                     (2 * i) + 1)
    return [2] + [2 * i + 1 for i in range(1, int(n / 2)) if sieve[i]]


def rotate(s, d):
    return s[-d:] + s[:-d]


rot = set()
primes = rwh_primes(10**6)
for prime in primes:
    if prime not in rot:
        add_prime = True
        for d in range(len(str(prime))):
            if not isPrime(int(rotate(str(prime), d))):
                add_prime = False
        if add_prime:
            for d in range(len(str(prime))):
                rot.add(int(rotate(str(prime), d)))

print(len(rot))
print(rot)
示例#23
0
from isPalindrome import isPalindrome
from isPrime import isPrime

if __name__ == '__main__':
    num = int(input('请输入正整数: '))
    if (isPalindrome(num) and isPrime(num)):
        print('%d是回文素数' % num)
    else:
        print('%d不是回文素数' % num)
示例#24
0
#'Man kann die Fragestellung mit der Gleichung phi(x)=n*Produkt der Produkte aus (1-1/p) wobei p die Primfaktoren der Zahl n sind.
#So lässt sich das Problem verstehen, als die Suche nach dem der Zahl, bei der folgende Funktion maximal wird:

#1/Produkt aus (1-1/p)

# wobei P die Primfaktoren von der gesuchten Zahl sind. Die Funktion wird dann maximal, wenn die
# gesuchte Zahl n aus möglichst vielen Primfaktoren zusammengestzt ist.

#Man kann also die Fragestellung auch Formulieren, als die Suche nach der Zahl unter 1000000, die die meißten unterschiedlichen Primfaktoren enthält.
from isPrime import isPrime
primes = []

for x in range(2, 400):
    if isPrime(x) == True:
        primes.append(x)
product = 1
for x in primes:
    if product * x < 1000000:
        product = product * x

print(product)
示例#25
0
def generatePrimes(limit):
    prime_list = [2, 3, 5, 7, 11]
    for n in range(13, (limit // 2), 2):
        if isPrime(n):
            prime_list.append(n)
    return prime_list
示例#26
0
def fermat(a, b, n):
    b1 = 0
    if isPrime.isPrime(n) and a > 0:
        b1 = b % (n - 1)
        return DownGradedModulo.power(a, b1, n)
    return -1
from isPrime import isPrime
from fasterIsPrime import fasterIsPrime
import time


# Verify these are the same
for n in range(100):
    assert(isPrime(n) == fasterIsPrime(n))
print("They seem to work the same!")

# Now let's see if we really sped things up
bigPrime = 499  # Try 1010809, or 10101023, or 102030407
print("Timing isPrime(", bigPrime, ")", end=" ")
time0 = time.time()
print(", returns ", isPrime(bigPrime), end=" ")
time1 = time.time()
print(", time = ", (time1-time0) * 1000, "ms")

print("Timing fasterIsPrime(", bigPrime, ")", end=" ")
time0 = time.time()
print(", returns ", fasterIsPrime(bigPrime), end=" ")
time1 = time.time()
print(", time = ", (time1-time0) * 1000, "ms")
示例#28
0
 def test_invalid(self):
     self.assertEqual(isPrime(-1), False)
示例#29
0
from isPrime import isPrime
from primes_to_n import list_primes
import itertools as it


#primes = list_primes(10**10)
#print("part 1")
def is_pandigital(s):
    for d in range(1, len(s) + 1):
        if s.count(str(d)) != 1:
            return False
    return True


cand = set()
for d in range(2, 9):
    for i in it.permutations([str(i) for i in range(1, d + 1)]):
        p = ''.join(i)
        if isPrime(int(p)):
            if is_pandigital(p):
                cand.add(p)
print("count:", len(cand))
print("max:", max(cand))
示例#30
0
from isPrime import isPrime

print sum([x for x in xrange(2,2000000) if isPrime(x)])