定义: Palindromic Wing Primes(简称PWP' s)是数字 是基数10的素数,回文,由一个中心数字组成 由两个相同数字和相同数量的翅膀包围 与中央不同。 E.g。
101 99999199999 333333313333333 7777777777772777777777777 11111111111111111111111111111111411111111111111111111111111111111
如果它是回文翼和素数,则数字是回文翼素。这是前几个回文翼质量: 101,131,151,181,191,313,353,373,383,727,757,787,797,919,929,11311,11411,33533,77377,77477,77977,1114111,111171,3331333,3337333 7772777,7774777,7778777,111111111,11111111111,777767777,77777677777,...
如果数字是回文翼,我需要帮助找到正确的算法或伪代码 如果有人可以帮我指导Palindromic Wing Primes的更多信息,他们的历史和最后的结果,也许可以帮助我和#34; mathematica Programming"这将是惊人的
亲切的问候
答案 0 :(得分:1)
使用Mathematica测试翼长1至20的翼形回文。
sets = DeleteCases[Tuples[Range[0, 9], 2], {a_, a_} | {0, _}];
grow[n_] := Map[Flatten, {a = ConstantArray[#1, n], #2, a} & @@@ sets]
test[c_] := If[PrimeQ[k = FromDigits@c], AppendTo[output, k]]
run[from_, to_] := Do[test /@ grow[i], {i, from, to}]
output = {};
run[1, 20]
101 131 151 181 191 ... 111111111111111111131111111111111111111 777777777777777777797777777777777777777 77777777777777777777977777777777777777777
答案 1 :(得分:0)
有趣的定义,我第一次听到这个。
假设你知道如何检查一个数字是回文和素数,这里有一些伪代码和python代码
isPalindromicWing(N){
if isPalindromic(N){
num <- toString(N)
tam <- length(num)
if isOdd(tam) and lenght(toSet(num)) = 2{
middle <- num[ floor(tam/2) ]
if 1 = num.count(middle){
return True
}
}
}
return False
}
isPWP(N){
return isPalindromicWing(N) and isPrime(N)
}
我使用集合去除重复,并且因为数字只能有2个不同的数字lenght(toSet(num)) == 2
我检查了,然后我取中间数字并检查数字中是否只有一个。其余我认为是自我解释的。
中的
def isPalindromic(N):
num = str(N)
return N == int( num[::-1] )
def isPalindromicWing(n):
if isPalindromic(n):
num = str(n)
tam = len(num)
if tam % 2 == 1 and len(set(num)) == 2:
middle = num[tam // 2]
if 1 == num.count(middle):
return True
return False
我不知道&#34; mathematica Programming&#34;,但是你明白这个代码你也可以做到这一点吗