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)))
def characteristic(base): if isPrime(base): return base factors = pFactor(base) if len(factors) != 1: return None return int(next(iter(factors)))
def nthPrime(n): found = 0 guess = 0 while found <= n: guess += 1 if isPrime(guess): found += 1 return guess
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
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
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)
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)
from isPrime import isPrime for x in range(__ITERS__): isPrime(x) print('end')
def test_prime(self): self.assertEqual(isPrime(19), True)
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
def main(): num = int(input("Enter a number: ")) if isPrime.isPrime(num): print("This number is prime") else: print("This is not prime number")
def test_nonprime(self): self.assertEqual(isPrime(12), False)
def test_is_a_prime(self): a = [2, 3, 5, 7, 11, 31, 59, 15485863] for i in a: self.assertTrue(isPrime(i))
#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
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
''' 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))
#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
#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)
def test_is_not_prime(self): a = [9, 81, 140, 200, -2] for i in a: self.assertFalse(isPrime(i))
def test_input_is_not_number(self): a = ["a", "1"] for i in a: self.assertFalse(isPrime(i))
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)
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)
#'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)
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
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")
def test_invalid(self): self.assertEqual(isPrime(-1), False)
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))
from isPrime import isPrime print sum([x for x in xrange(2,2000000) if isPrime(x)])