Python3 欧拉计划 问题1-5

作者: AiFany | 来源:发表于2017-11-06 09:19 被阅读0次
EulerProject.png
  欧拉计划(Project Euler)是一个解题网站,包括一系列有挑战性的数学与计算机编程题;要解开它们,需要的不止是数学知识:尽管数学能够帮助你找到一些优雅而有效的方法,大多数题目仍需要借助计算机和编程技巧来完成解答。本系列会持续按序更新对全部问题的基于Python3的解决方法。此外本系列文章仅提供问题的中文版,英文题目请参见网站

1、3和5的倍数

  小于10的非零自然数中是3或者5的倍数有3、5、6、9,这四个数的和为23。计算小于1000的自然数中是3或者5的倍数的所有数的和。

Python3解答
an=sum([i for i in range(1,1000) if i%3==0 or i%5==0])
print(an)
答案:233168

2、斐波那契数列中的偶数

  斐波那契数列中每一项均是由前两项的和组成,以1和2作为开始的两项,则前10项为1、2、3、5、8、13、21、34、55、89。
  请计算最后一项不超过400万的斐波那契数列中的所有偶数之和。

Python3解答
a,b=1,2
fan=2#开始的两项中的偶数
while a+b<=4000000:
    a,b=b,a+b
    if(a+b)%2==0:#只计算偶数
        fan+=a+b
print(fan)
答案:4613732

3、最大素因数

  13195的素因数为5、17、13和29。求60051475143的最大素因数。

Python3解答
def getfactor(num):
    arr = []
    i = 2
    while num != 1:
        if num % i == 0:
            while num % i == 0:
                arr.append(i)
                num /= i
        i = i + 1
    return  max(arr)
print(getfactor(600851475143))
答案:6857

4、最大的乘积回文数

  所谓回文数就是从后往前和从前往后读是一样的数。由两个2位数相乘得到的最大乘积回文数是 9009 = 91 × 99。
  找出由两个3位数相乘得到的最大乘积回文数。

Python3解答
def an_palindromic(number):  # 判断回文数
    num = str(number)
    if num == num[::-1]:
        return True

result = 0
for ip in range(100, 1000):
    for jp in range(100, 1000):
        pro = ip * jp
        if an_palindromic(pro):
            result = max([result, pro])

print(result)
答案:993*913=906609

5、最小倍数

  能被1到10这10个数整除的最小的正数是2520。计算最小的能够被1到20整除的正数。

Python3解答
def an_decompose(num):
    arr = []
    ifg = 2
    while num != 1:
        if num % ifg == 0:
            while num % ifg == 0:
                arr.append(ifg)
                num /= ifg
        ifg = ifg + 1
    return arr
an=[]#20以内的数分解为质因数
for i in range(2,21):
    for w in an_decompose(i):   
        an.append(w)
def an_list(list1,list2):
    for i in list2:
        while list1.count(i)<list2.count(i):
            list1.append(i)
    return list1
an=list(set(an))
fan=2
while fan<=20:#如果一个数的全部质因数包括在an里,则不增加。否则少几个加几个。
    an=an_list(an,an_decompose(fan))
    fan+=1
fan=1#计算最终的乘积
for i in an:
    fan*=i
print(fan)
答案:232792560

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

相关文章

  • Python3 欧拉计划 问题1-5

    1、3和5的倍数   小于10的非零自然数中是3或者5的倍数有3、5、6、9,这四个数的和为23。计算小于1000...

  • Python3 欧拉计划 问题16-20

    问题11-15参见:http://www.jianshu.com/p/c02f0a54052c 16、幂的数字和 ...

  • Python3 欧拉计划 问题51-55

    51、素数数字替换   将两位数a3的第一个数字替换为任意数字,在九个可能值中有六个是素数:    13、23、4...

  • Python3 欧拉计划 问题61-65

    61、循环多边形数   三角形数、正方形数、五边形数、六边形数、七边形数和八边形数统称为多边形数。它们分别由如下的...

  • Python3 欧拉计划 问题56-60

    56 幂的数字和   一古戈尔( 10^100 )是一个巨大的数字:1后面跟着100个0。100^100则更是无法...

  • Python3 欧拉计划 问题86-90

    86、长方体内最短直线路径   蜘蛛spider在一个6*5*3大小的长方体盒子的一角,而苍蝇fly则恰好位于其对...

  • Python3 欧拉计划 问题46-50

    46、哥德巴赫的另一个猜想   哥德巴赫曾猜想:每个奇合数可以写成一个素数和一个平方的两倍之和。    9 = 7...

  • Python3 欧拉计划 问题96-100

    96、数独 详细解法参见   数独是一种热门的谜题。它的起源已不可考,但它与欧拉发明的一种类似的谜题拉丁方阵之...

  • Python3 欧拉计划 问题91-95

    91、直角三角形个数   下图中,点P(x1, y1)、点Q(x2, y2)、原点O(0,0)构成直角坐标系中的三...

  • Python3 欧拉计划 问题6-10

    6、平方的和与和的平方之差   前10个自然数平方的和是:1^2 + 2^2 +… + 10^2 = 385。前1...

网友评论

    本文标题:Python3 欧拉计划 问题1-5

    本文链接:https://www.haomeiwen.com/subject/atdcmxtx.html