Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #This program finds the next closest prime number (lower or higher)
- def find_next_prime(n):
- #flag = 0 means that the number found is prime
- #flag = 1 means that the number found is composite (has factors)
- if n <= 1: #in the case n is negative, 0 or 1, closest prime number is always 2
- closestprime = 2
- else:
- for i in reversed(range (2, n)): #looking for closest lower prime number, saved as lowp:
- flag = 0
- for a in range (2, i): #tests if i is a prime number
- attempt = i % a
- if attempt == 0: #factor found, i not prime
- flag = 1
- break
- if flag == 0: #went through for loop and found that i is prime
- lowp = i
- break
- flag = 1
- test = n
- while flag == 1:#find closest higher prime, saved as highp:
- test = test + 1
- flag = 0 #assume this test is prime
- for i in range (2, test): #Check if test is really prime
- attempt = test % i
- if attempt == 0: #test is not a prime number
- flag = 1
- break #try next number
- if flag == 0: #n is actually a prime number!
- highp = test
- if (n - lowp) > (highp - n):
- closestprime = highp
- elif (n - lowp) < (highp - n):
- closestprime = lowp
- elif (n - lowp) == (highp - n):
- return "The number " + str(n) + " is equally close to the prime numbers " + str(lowp) + " and " + str(highp)
- return closestprime
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement