Python3 欧拉计划 问题51-55

EulerProject.png

问题46—50参见:https://www.jianshu.com/p/530e1482169e

51、素数数字替换

  将两位数a3的第一个数字替换为任意数字,在九个可能值中有六个是素数:
    13、23、43、53、73、83
将五位数56aa3的第三和第四位数字替换为相同的任意数字,十个可能值中有七个是素数,这7个素数是:
    56003、56113、56333、56443、56663、56773、56993
56003作为最小的数,也是最小的满足这个性质的素数。
  通过将部分数字(不一定相邻)替换为相同的任意数字,有时能够得到八个素数,求满足这一性质的最小素数。

Python3解答
import itertools#引入组合库
def JudgePrime(num):#判断素数
    if num==1 or num==2:
        return False
    else:
        for i in range(2,int(num**0.5)+1):
            if num%i==0:
                return False
        return True
def JuList(li):#判断替换的数字序列中素数的个数
    return [JudgePrime(i) for  i in li].count(True)
#判断要加的数
def Jadd(num,s='1'):
    #记录位置
    weizhi=[]
    fan=list(str(num))
    for i in fan[:-1]:#最后一位去除
        if i==s:
            t=fan.index(i)
            fan[fan.index(i)]='w'
            weizhi.append(len(fan)-t-1)
    #获得全排列
    du=[]
    for ig in range(len(weizhi)):
        for gi in list(itertools.combinations(weizhi,ig+1)):
            du.append(gi)
    #根据全排列后的确定加的数字
    shuzi=[]
    for j in du:
        sumsum=0
        for js in j:
            sumsum+=10**js
        shuzi.append(sumsum)
    return shuzi
#开始
bu=0
st=100000
while bu!=1:
    if JudgePrime(st):
        for iss in range(3):
            for iadd in Jadd(st,s=str(iss)):
                jjuu=[st]
                for ij in range(1,9-int(iss)+1):
                    jjuu.append(st+ij*iadd)
                if JuList(jjuu)==8:
                    print(st,iadd,jjuu)
                    bu=1
        st+=1
    else:
        st+=1
答案:素数序列为:[121313, 222323, 323333, 424343, 525353, 626363, 727373, 828383, 929393],第1,3,5位替换。
最小的素数:121313。

52、倍数重排

  125874和它的两倍251748拥有同样的数字,只是排列顺序不同。有些正整数x满足2x、3x、4x、5x和6x都拥有相同的数字,求其中最小的正整数。

Python3解答
def SameDigit(exlist):#判断数字相同
    for i in  exlist:
        if set(i)!=set(exlist[0]):
            return False
    return True
Number=1
while 1:
    Nlist=[str(i*Number) for i in range(1,7)]
    if SameDigit(Nlist):
        print(Nlist)
        break
    else:
        Number+=1
答案:['142857', '285714', '428571', '571428', '714285', '857142']
结果:142857.

53、组合数

  从五个数1,2,3,4,5中选择三个恰好有十种方式,分别是:
    123、124、125、134、135、145、234、235、245、345
在组合数学中,我们记作:C(5,3)= 10。一般来说,C(n,r)=n!/r!(n−r)!,其中r ≤ n,n! = n×(n−1)×…×3×2×1,且0! = 1。直到n = 23时,才出现了超出一百万的组合数:C(23,10) =1144066。
  若数值相等形式不同也视为不同,对于1 ≤ n ≤ 100,有多少个组合数C(n,r)超过一百万。

Python3解答
def GetComb(m, n):  # 计算数的组合值
    pro = 1
    orp = 1
    for i in range(m + 1 - n, m + 1):
        pro *= i
    for j in range(1, n + 1):
        orp *= j
    return pro / orp
ji = 0
for i in range(1, 101):
    for j in range(1, i):
        if GetComb(i, j) >= 1e6:
            ji += 1
print(ji)
答案:4075

54、扑克游戏

答案参见: https://www.jianshu.com/p/e3a3dc1f7919

55、利克瑞尔数

  将47倒序并相加得到47 + 74 = 121,是一个回文数。不是所有的数都能像这样迅速地变成回文数。例如:
    349 + 943 = 1292,1292 + 2921 = 4213,4213 + 3124 = 7337
也就是说,349需要迭代三次才能变成回文数。
  以下陈述尽管尚未被证实,但有些数,例如196,被认为永远不可能变成回文数。如果一个数永远不可能通过倒序并相加变成回文数,就被称为利克瑞尔数。出于理论的限制和问题的要求,在未被证否之前,我们姑且就认为这些数确实是利克瑞尔数。
  除此之外,已知对于任意一个小于一万的数,它要么在迭代50次以内变成回文数,要么就是没有人能够利用现今所有的计算能力将其迭代变成回文数。事实上,10677是第一个需要超过50次迭代变成回文数的数,这个回文数是
    4668731596684224866951378664(53次迭代,28位数)
  令人惊讶的是,有些回文数本身也是利克瑞尔数数;第一个例子是4994。
  小于一万的数中有多少利克瑞尔数。

Python3解答
def JudgeP(number):#判断回文数
    stnu = str(number)
    for i in range(int(len(stnu) / 2)):
        if stnu[i] != stnu[-i - 1]:
            return False
    return True
def Lcyder(number, nu=50):#50次之内变不成回文数
    d = nu
    while d > 0:
        number += int(str(number)[::-1])
        if JudgeP(number):
            return True
        else:
            d -= 1
    return False
d = 0
for i in range(10000):
    if not Lcyder(i):
        d += 1
print(d)
答案:249

持续更新,欢迎讨论,敬请关注!!!  

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,547评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,399评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,428评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,599评论 1 274
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,612评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,577评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,941评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,603评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,852评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,605评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,693评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,375评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,955评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,936评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,172评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,970评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,414评论 2 342