Advertisement
mateon1

Prime Number Finder (FIX!)

May 5th, 2013
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.05 KB | None | 0 0
  1. from time import time,ctime,sleep
  2.  
  3. DBFILE="primesDB.txt"
  4. primes=[2,5]    #Not found by fastPrime(n) because of a speed optimization
  5. autosv=1000000  #Autosave not included this paste
  6.  
  7. #
  8. # LOAD FROM DATABASE DISABLED!
  9. #
  10.  
  11. def isprime(n): ## For imports for example?
  12.     if n < 2: return str(n)+" is not a prime number."
  13.     if n == 2: return str(n)+" is a prime number."
  14.     for i in [2]+range(3,int(n**0.5)//1+1,2):
  15.         if not n%i:
  16.             return "%i is %i*%i"%(n,i,n/i)
  17.     else:
  18.         return "%i is not a prime number."%(n)
  19.     return "%i is a prime number."%(n)
  20.  
  21. def fastPrime(n):
  22.     if n%10 in [1,3,7,9]:
  23.         for i in range(3,int(n**0.5)//1+1,2):
  24.             if not n%i:
  25.                 #return "%i is %i*%i"%(n,i,n/i) #Slower
  26.                 return str(n)+" is "+str(i)+"*"+str(n/i)#Faster
  27.     else:
  28.         #return "%i is not a prime number."%(n) #Slower
  29.         return str(n)+" is not a prime number."#Faster
  30.     primes.append(n)
  31.     #return "%i is a prime number."%(n) #Slower
  32.     return str(n)+" is a prime number."#Faster
  33.  
  34. def check(start=3, end=1000000):
  35.     s=time()
  36.     if start<3:
  37.         start=3
  38.     if end<start:
  39.         end=1000000
  40.     for i in range(start,end):
  41.         #curr=isprime(i)
  42.         curr=fastPrime(i)
  43.         if curr==str(i)+" is a prime number.":
  44.             #print "Found a prime: %i; %s"%(i,ctime(time())) #SLOWER! In all programs that use a lot of string logic use string concat. instead of %x
  45.             print "Found a prime: "+str(i)+"; "+ctime(time())
  46.     print "Finished. Took %.2f seconds to finish."%(time()-s)
  47.  
  48. if __name__=="__main__":
  49.     print "Tip: '-1' to ignore (Replaced by defaults: Start=3, End=1000000)."
  50.     check(input("Start at which number?"),input("End at which number?"))
  51.     print "Primes total found: %i"%(len(primes))
  52.     print "Pre-save..."
  53.     p=[]
  54.     for i in primes:
  55.         p.append(str(i))
  56.     sv="\n".join(p)
  57.     with open(DBFILE,"w") as f:
  58.         print "Saving..."
  59.         f.write(sv)
  60.         print "Saved!"
  61.    
  62.     raw_input("Enter to continue...")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement