def tryit(special,memo={}): print special if special in memo: return memo[special] memo[special]= None result = None for prime in p.primes_list: count = 0 if prime in special: continue for s in special: if p.is_prime(p.concat_nums(prime,s)): if p.is_prime(p.concat_nums(s,prime)): count +=1 if count == len(special): result = special+(prime,) break if result == None: for i in range(len(special)): for prime in p.primes_list[1:]: if prime not in special: result = tryit(special[:i]+(prime,) +special[i+1:]) if result: print result break if result: break memo[special] = result return memo[special]
def is_concat(p1,p2,misconcat={}): if (p1,p2) in misconcat: return misconcat[(p1,p2)] misconcat[(p1,p2)]=False if (pr.is_prime(pr.concat_nums(p1,p2)) and pr.is_prime(pr.concat_nums(p2,p1))): misconcat[(p1,p2)] = True misconcat[(p2,p1)] = True return misconcat[(p1,p2)]