Python3 欧拉计划 问题26-30

EulerProject.png

问题21—25参见:http://www.jianshu.com/p/5437d1305800

26、最长的倒数循环节

  单位分数是指分子为1的分数。分母从2到10的单位分数的十进制表示如下所示:
    1/2= 0.5
    1/3= 0.(3)
    1/4= 0.25
    1/5= 0.2
    1/6= 0.1(6)
    1/7= 0.(142857)
    1/8= 0.125
    1/9= 0.(1)
    1/10= 0.1
这里0.1(6)表示0.166666…,括号内表示有一位的循环节。可知,1/7有六位循环节。
  找出小于1000的正整数d,其倒数的十进制表示的小数部分有最长的循环节。

Python3解答
import re
from decimal import *
getcontext().prec,an_fan=1000*5 ,0
def an_match(number):
    fan_form=r"(\d+?)\1" #正则表达式匹配重复的数字
    an=re.search(fan_form, str(number))
    if an:
        return an.group(1)
def fan_num(aa):
    if len(str(int(aa)))>=1:
        return 10**(len(str(aa))-1)
    else:
        return 1

for i in range(1,1000):
    fan=[an_match(Decimal(1)*fan_num(i)/Decimal(i))]# 防止匹配的数字为0,因此分子要相应的扩大倍数,保证小数点后第一个数字不为0
    if fan!=[None]:#只有无限不循环的小数才进行判断
        if len(fan[0]) >= an_fan:# 选取最长的
            an_fan = len(fan[0])
            dnumber = i
print(dnumber)
答案:983

27、二次“素数生成”多项式

  欧拉发现了这个著名的二次多项式:n2 + n + 41。n从0到39,这个二次多项式生成了40个素数。然而,当n = 40时,402 + 40 + 41 = 40(40 + 1) + 41能够被41整除,同时显然当n = 41时,412 + 41 + 41也能被41整除。
  随后,另一个神奇的多项式n2 − 79n + 1601被发现了,对于n从0到79,它生成了80个素数。这个多项式的系数-79和1601的乘积为-126479。
  考虑以下形式的二次多项式:n2 + an + b, 满足|a| < 1000且|b| < 1000。其中|n|表示n的绝对值,例如|11| = 11以及|−4| = 4。这其中存在某个二次多项式能够对从0开始尽可能多的连续整数n都生成素数,求其系数a和b的乘积。

Python3解答
def com_pri(number):#判断素数
    if  number==2:
        return True
    else:
        for i in range(2,int(number**0.5)+1):
            if number%i==0:
                return False
        return True
fan_an=[x for x in range(2,1001) if com_pri(x)]#n =0 时, b为素数
def an_fan(i,j,n, c=0):
    if com_pri(abs(n**2+i*n+j)):
         c+=1
         return an_fan(i,j,n+1,c)
    else:
         return c
number=0
for j in fan_an:
    for i in [x-j-1 for x in fan_an]:#n= 1 时, a+b+1 为素数
        result=an_fan(i,j,0,c=0)
        if number <= result:
            number = result
            ab = [j, i]
print(ab)
print(ab[0]*ab[1])
答案:-59231

28、螺旋数阵对角线

  从1开始,按顺时针顺序向右铺开的5 × 5螺旋数阵如下所示:


problem28.png

可以验证,该数阵对角线上的数[红色数字]之和是101。
  以同样方式构成的1001 × 1001螺旋数阵对角线上的数之和是。

Python3解答
anfan=sum((j**2+j**2-3*(j-1))*2 for j in range(3,1002) if j%2==1)+1
print(anfan)
答案:669171001

29、不同的幂

  考虑所有满足2 ≤ a ≤ 5和2 ≤ b ≤ 5的整数组合生成的幂a^b
    2^2=4, 2^3=8, 2^4=16, 2^5=32
    3^2=9, 3^3=27, 3^4=81, 3^5=243
    4^2=16, 4^3=64, 4^4=256, 4^5=1024
    5^2=25, 5^3=125, 5^4=625, 5^5=3125
如果把这些幂按照大小排列并去重,我们得到以下由15个不同的项组成的序列:
4, 8, 9, 16, 25, 27, 32, 64, 81, 125, 243, 256, 625, 1024, 3125
  在所有满足2 ≤ a ≤ 100和2 ≤ b ≤ 100的整数生成的幂a^b排列并去重所得到的序列中,有多少项。

Python3解答
an=[]
fan=0
for i in range(2,101):
    for j in range(2,101):
        if i**j not in an:
            fan+=1
            an.append(i**j)
print(fan)
答案:9183

30、数字的五次幂

  令人惊讶的是,只有三个数可以写成它们各位数字的四次幂之和:
    1634 = 1^4 + 6^4 + 3^4 + 4^4
    8208 = 8^4 + 2^4 + 0^4 + 8^4
    9474 = 9^4 + 4^4 + 7^4 + 4^4
由于1 = 1^4不是一个和的形式,因此这里没列出。这些数的和是1634 + 8208 + 9474 = 19316。
  找出所有可以写成它们各位数字的五次幂之和的数,并求这些数的和。

Python3解答
def an_fan(number):
    an_fan=[]
    for i in range(len(str(number))):
        an_fan.append(str(number)[i])
    if sum(int(i)**5 for i in an_fan)==number:
        return True
fanlist = [i for i in range(2,9**6) if an_fan(i)]
print(fanlist)
print(sum(fanlist))
答案:[4150, 4151, 54748, 92727, 93084, 194979],和为443839

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

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

推荐阅读更多精彩内容

  • 【1】7,9,-1,5,( ) A、4;B、2;C、-1;D、-3 分析:选D,7+9=16;9+(-1)=8;(...
    Alex_bingo阅读 18,798评论 1 19
  • 荣成,山东半岛最东端最先看到日出的一个僻静的海滨小城,地广人稀,有着和青岛一样秀美漫长的海岸线。 此次的荣成马拉松...
    郑是韶华阅读 816评论 1 5
  • 本来是上个月就开始写手账了,然后写的比较丑,又是小白,所以一直不敢发,今天虽然没有画画,但是打一张手账的卡吧,好好...
    桔纱阅读 462评论 1 8
  • 有时我觉得我们都过得很艰难,我们不敢生病,不敢吃好的,不敢买自己心仪许久的美衣,至今没有一套属于自己的窝,我们吃着...
    yyj22阅读 153评论 0 0
  • Day13的挑战主题:延伸 1、沿着图样的开放线条,或者沿着图样的“触角”,沿着图样的内部及外部轮廓,延伸画出其他...
    木之慧阅读 688评论 0 13