def largePrimediv(num): print num primes=[(i) for i in primes_upto(10000) if i is not 0] largest=1 for i in primes: if i> num: break; if num%i is 0: num=num/i largest=i return largest
#We shall say that an n-digit number is pandigital if it makes use of all the digits 1 to n exactly once. For example, 2143 is a 4-digit pandigital and is also prime. #What is the largest n-digit pandigital prime that exists? cache=[] def highPandigital(): best=0 num=0 for i in cache: size=len(str(i)) for j in range(1,size+1): if str(j) not in list(str(i)): break else: best=len(str(i)) if len(str(i))>=best else best num=i return best,num if __name__=="__main__": import sys from p10 import primes_upto if len(sys.argv)<2: print "--input--> [(h)ighest] [non-zero integer] <---output pandigital information" exit() cache.extend([i for i in primes_upto(int(sys.argv[1])) if i]) print "The highest pandigital number is ",highPandigital()
rotary[joined]=False return False rotary[joined]=True return True def rotaries(top): for i in cache: if isRotary(i): yield i if __name__=="__main__": import sys from p10 import primes_upto if len(sys.argv)<3: print "--input--> [(r)otary|(c)heck] [non-zero integer] <---output rotary prime info" exit() if sys.argv[1] is "rotary" or (sys.argv[1])[0] is "r": cache.update([i for i in primes_upto(int(sys.argv[2])) if i]) print "The rotary primes under %i are",int(sys.argv[2]) rots=1 for i in rotaries(int(sys.argv[2])): # print i rots+=1 print "There are %i circular numbers" % rots exit() if sys.argv[1] is "check" or (sys.argv[1])[0] is "c": cache.update([i for i in primes_upto(int(sys.argv[2])+1) if i]) print sys.argv[2],"is",isRotary(int(sys.argv[2]))