问题:给定S
格式abcdefijak...
,每个字母都指一个数字。每3个数字由3个数字素数组成,每个数字彼此不同。什么是最大的S
?
有很多方法可以解决这个问题。我的问题是:如何在DP中解决它?
答案 0 :(得分:2)
我写了一个愚蠢的暴力算法:
def isprime(n):
for x in xrange(2, int(n**0.5)+1):
if n % x == 0:
return False
return True
primes3 = filter(isprime, range(100, 1000))
def biggest():
return max([biggie(x, set(primes3)-set([x])) for x in primes3])
def biggie(sofar, primes):
next2 = sofar % 100
found = sofar
for prime in filter(lambda x: 10*next2 <= x < 10*(next2+1), primes):
found = max(found, biggie(10*sofar + (prime % 10), primes - set([prime])))
return found
这给了我9419919379773971911373313179
的结果。用Google搜索,发现了这个:https://stackoverflow.com/questions/3836008/find-largest-number-with-all-contiguous-triples-being-unique-primes
关闭为重复...
答案 1 :(得分:1)
找到所有3位数的素数,然后按降序排列所有素数。如果您的任务中没有看不到任何要求,那就是全部。