首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >回文翼素数- Mathematica

回文翼素数- Mathematica
EN

Stack Overflow用户
提问于 2016-01-16 09:16:32
回答 2查看 160关注 0票数 0

定义:回文翼质数(或简称PWP)是质数,以10为基数的回文数,由一个中心数字组成,由两个具有相等数量的相同数字的翅膀包围,与中心数字不同。例如。

101 99999199999 333333313333333 77777777772777777777777777777 11111111111111111111111111111111411111111111111111111111111111111

一个数是回文翼素数,如果它既是回文翼素又是素数。下面是前几个回文翼质数: 101,131,151,181,191,313,353,373,383,727,757,787,797,919,929,11311,11411,33533,77377,77477,77977,1114111,1117111,3331333,3337333,7772777,7774777,7778777,111181111,111191111,777767777,77777677777,……

请帮助我找到正确的算法或伪代码,如果一个数字是回文之翼,如果有人可以帮助我与指南我更多的信息,他们的历史和最后的结果,也许会帮助我与“数学编程”,这将是惊人的

亲切的问候

EN

回答 2

Stack Overflow用户

发布于 2016-01-16 15:06:21

使用Mathematica测试从机翼长度1到20的机翼回文。

代码语言:javascript
复制
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]

77777777777777777777977777777777777777777

101 131 151 181 191 ... 111111111111111311111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111177777777777777777777777777777777777777777777777777777777

票数 1
EN

Stack Overflow用户

发布于 2016-01-16 11:21:42

有趣的定义,这是我第一次听说。

假设您知道如何检查一个数字是否为回文和质数,下面是一些伪代码和python代码

代码语言:javascript
复制
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)
}

我使用集合来消除重复,由于使用lenght(toSet(num)) == 2的数字只能有两个不同的数字,因此我检查是否有中间的数字,并检查数字中是否只有一个。剩下的我认为不言自明。

在python中,这是

代码语言:javascript
复制
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

我不知道"mathematica Programming",但是你能理解这段代码吗?当然你也可以这样做

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34822476

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档