Advertisement
Guest User

Untitled

a guest
Jun 26th, 2016
56
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.63 KB | None | 0 0
  1. #This program finds the next closest prime number (lower or higher)
  2.  
  3.  
  4. def find_next_prime(n):
  5. #flag = 0 means that the number found is prime
  6. #flag = 1 means that the number found is composite (has factors)
  7.  
  8.  
  9. if n <= 1: #in the case n is negative, 0 or 1, closest prime number is always 2
  10. closestprime = 2
  11. else:
  12. for i in reversed(range (2, n)): #looking for closest lower prime number, saved as lowp:
  13. flag = 0
  14. for a in range (2, i): #tests if i is a prime number
  15. attempt = i % a
  16. if attempt == 0: #factor found, i not prime
  17. flag = 1
  18. break
  19. if flag == 0: #went through for loop and found that i is prime
  20. lowp = i
  21. break
  22. flag = 1
  23. test = n
  24. while flag == 1:#find closest higher prime, saved as highp:
  25. test = test + 1
  26. flag = 0 #assume this test is prime
  27. for i in range (2, test): #Check if test is really prime
  28. attempt = test % i
  29. if attempt == 0: #test is not a prime number
  30. flag = 1
  31. break #try next number
  32.  
  33. if flag == 0: #n is actually a prime number!
  34. highp = test
  35.  
  36. if (n - lowp) > (highp - n):
  37. closestprime = highp
  38.  
  39. elif (n - lowp) < (highp - n):
  40. closestprime = lowp
  41.  
  42. elif (n - lowp) == (highp - n):
  43. return "The number " + str(n) + " is equally close to the prime numbers " + str(lowp) + " and " + str(highp)
  44.  
  45. return closestprime
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement