key += 1
    len -= 1
  return 1

def permutations(seq):
  if len(seq) == 1:
    yield seq
  else:
    for i in xrange(len(seq)):
      for j in [[seq[i]] + x for x in permutations(seq[:i] + seq[i+1:])]:
        yield j
    
# try all # of digits counting down from 7
    
digits = range(1,8)
digits.reverse()
for d in digits:
    # iterate through permutations in reverse numerical order
    for l in [[str(c) for c in range(1,d)]]:
        found = False
        l.reverse()
        lenl = len(l)
        print l
        while permute(l,lenl):
          il = int(''.join(l))
          if rabin_miller(il):
            print il
            found = True
            break
    if found:
        break
def filter_prime(num):
    global primed
    primed += 1
    if primed % 10 == 0: print "prime candidate: " + str(num)
    if rabin_miller(num): return num
    return False