1# Time Efficient Primality Check in Python
2
3def primeCheck(n):
4 # 0, 1, even numbers greater than 2 are NOT PRIME
5 if n==1 or n==0 or (n % 2 == 0 and n > 2):
6 return "Not prime"
7 else:
8 # Not prime if divisable by another number less
9 # or equal to the square root of itself.
10 # n**(1/2) returns square root of n
11 for i in range(3, int(n**(1/2))+1, 2):
12 if n%i == 0:
13 return "Not prime"
14 return "Prime"
1def isPrime(n):
2 if n<2: #1, 0 and all negative numbers are not prime
3 return False
4 elif n==2: #2 is prime but cannot be calculated with the formula below becuase of the range function
5 return True
6 else:
7 for i in range(2, n):
8 if (n % i) == 0: #if you can precisely divide a number by another number, it is not prime
9 return False
10 return True #if the progam dont return False and arrives here, it means it has checked all the numebrs smaller than n and nono of them divides n. So n is prime
1# There is no quick way to calculate the prime factors of a number.
2# In fact, prime factorization is so famously hard that it's what puts the "asymmetric" in asymmetric RSA encryption.
3# That being said, it can be sped up a little bit by using divisibility rules, like checking if the sum of the digits is divisible by 3.
4
5def factors(num):
6 ps = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, 109, 113, 127, 131, 137, 139, 149] # Primes from https://primes.utm.edu/lists/small/10000.txt. Primes can also be generated by iterating through numbers and checking for factors, or by using a probabilistic test like Rabin-Miller.
7 pdict = {}
8 for p in ps:
9 if p <= num:
10 while (num / p).is_integer():
11 if str(p) in pdict:
12 pdict[str(p)] += 1
13 else:
14 pdict[str(p)] = 1
15 num /= p
16 if num == 1: break
17 return pdict
18
19# Returns a dictionary in the form {"base": "exponent"}
1#make the function
2#to do this all hte vairibles go in side the function
3
4def CheckIfPrime ():
5 a1 = input("which number do you want to check")
6 a = int(a1)#you need the checking number as an int not an str
7 b = 2 #the number to check againts
8 c = ("yes")
9 while b < a:#run the loop
10 if a%b == 0:#check if the division has a remainder
11 c = ("no")#set the answer
12 b = b+1
13 print(c)#print the output
14CheckIfPrime ()#call the function
15