result += 2 found = True # result = 3, primes = [2], j = 0, primes[0]*primes[0] > 3 ==> prime # result = 5, primes = [2, 3], j = 0, result%primes[0] == 1 # j = 1, primes[1]*primes[1] > 5 ==> prime # result = 7, primes = [2, 3, 5], j = 0, result%primes[0] == 1 # j = 1, primes[1]*primes[1] > 7 ==> prime # result = 9, primes = [2, 3, 5, 7], j = 0, result%primes[0] == 1 # j = 1, result%primes[1] == 0 ==> not prime j = 0 while (found and j < len(primes) and primes[j]*primes[j] <= result): if (result % primes[j] == 0): found = False j += 1 if (found): primes.append(result) return result targets = [ 6, 11, 101, 1001, 10001, 50001 ] sizes = [ 20, 40, 600, 8000, 105000, 612000 ] # for target in targets: # print("Worst(%d): %d" %(target, worst_index(target))) for i, target in enumerate(targets): sieve = Sieve(sizes[i]) print("Sieve(%d): %d" %(target, sieve.index(target))) for target in targets: print("Modified Sieve(%d): %d" %(target, sieve2_index(target))) for target in targets: print("Improved Sieve(%d): %d" %(target, sieve3_index(target)))