Guest User

Untitled

a guest
Oct 10th, 2011
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.17 KB | None | 0 0
  1. import time
  2. import math
  3.  
  4. def run_orig(numPrimesToFind):
  5.     x = 3
  6.     counter = 1
  7.     primes = [2]
  8.  
  9.     while counter < numPrimesToFind:
  10.         if x%2 != 0:
  11.             # code that runs if x is odd
  12.             # this block determines if x is not prime
  13.             for i in range(2, x):
  14.                 notPrime = False
  15.                 if x%i == 0:
  16.                     # if this code is being run we know that the number is not prime
  17.                     # create a not prime variable and make it true
  18.                     notPrime = True
  19.                     break
  20.             if notPrime == False: #the notPrime variable is false, the number is prime:
  21.                 primes.append(x)
  22.                 counter += 1
  23.             x += 1
  24.         else:
  25.             #code that runs if x is even
  26.             x += 1
  27.  
  28.     last = primes.pop(-1)
  29.     return last
  30.  
  31. def run_new(numPrimesToFind):
  32.     x = 3
  33.     numPrimesFound = 1
  34.     primes = [2]
  35.  
  36.     while numPrimesFound < numPrimesToFind:
  37.         isPrime = True
  38.         max = math.ceil(math.sqrt(x))
  39.         for i in primes:
  40.             if i > max:
  41.                 break
  42.             if x % i == 0:
  43.                 isPrime = False
  44.                 break
  45.         if isPrime:
  46.             primes.append(x)
  47.             numPrimesFound += 1
  48.         x += 2
  49.  
  50.     last = primes[-1]
  51.     return last
  52.  
  53. def getAvgPerf(primeNum, numTrials, function):
  54.     totalTime = 0
  55.     for trial in range(numTrials):
  56.         start = time.time()
  57.         result = function(primeNum)
  58.         elapsed = time.time() - start
  59.         totalTime += elapsed
  60.         print "Test %d/%d took %2.3fs" % (trial + 1, numTrials, elapsed)
  61.     print "Average: %2.3fs" % (totalTime / numTrials)
  62.     return totalTime / numTrials, result
  63.        
  64. def perfTest(primeNum, numTrials):
  65.     origElapsed, expected = getAvgPerf(primeNum, numTrials, run_orig)
  66.     newElapsed, actual = getAvgPerf(primeNum, numTrials, run_new)
  67.     if expected != actual:
  68.         print "ERROR!!! Functions do not return same value"
  69.     speedIncrease = (1 / newElapsed - 1 / origElapsed) * origElapsed
  70.     print "run_new is %2.3f%% faster" % (speedIncrease * 100)
  71. #perfTest(1000, 10)
  72.  
  73.    
  74.  
  75.  
Advertisement
Add Comment
Please, Sign In to add comment