• 欧拉项目python代码(1--10)


    欧拉计划(Project Euler)是一个解题网站,站内提供了一系列数学题供用户解答。

    以下代码均为本人亲自编写,仅保证答案与欧拉项目的答案相同。至于代码质量,能力有限,只能尽力而为。

    第一题:

    a=0
    for i in range(1,1000):
        if i%3==0 or i%5==0:
            a += i
    print "1000以内3和5的倍数之和:",a

    第二题:

    sum1=0
    sum2=0
    i=1
    j=1
    while j<4000000:
          j=i+j
          i=j-i
          if i%2==0:
            sum1=i+sum1
        
    print"小于4000000的斐波那契数列和:" ,sum1

    第三题:

    #算数基本定理:每个大于1的自然数均可写为质数的积,而且这些素因子按大小排列之后,写法仅有一种方式
    i=2
    num=600851475143
    while i<num+1:
           if num%i==0:
              num=num/i
              print i
           else:
              i=i+1
    

    第四题:

    解法1(仅适用于该题):

    count=1
    for i in range(100,999):
      for n in range(100,999):
          c=n*i
          e1=c%10
          c=c/10
          e2=c%10
          c=c/10
          e3=c%10
          c=c/10
          e4=c%10
          c=c/10
          e5=c%10
          c=c/10
          e6=c%10
          c=c/10
          if e1==e6 and e2==e5 and e3==e4:
            if count < n*i:
              count = n*i
              print count

    解法2(具有通性):

    a=3
    f=1
    for i in range(10**(a-1),10**a-1):
       for n in range(10**(a-1),10**a-1):
           c=n*i
           d=str(c)
           e=d[::-1]
           if d==e:
              if f<n*i:
                 f=n*i
    print f

    第五题,第六题略

    第七题

    求第10001个质数。

    count=1
    num=3
    def findPrime(s):#判断一个数是否为质数
        i=2
    import math while i<math.sqrt(s)+1:#依据质数判定法则
    if s%i == 0: return False else: i=i+1 return True while count <10001:#寻找第10001个质数 if findPrime(num): count =count + 1 num = num +2 else: num = num+2 print num-2

    sublime显示计算了1.0s。

    第9题:

    求满足a+b+c=1000且a^2+b^2=c^2的abc的乘积

    def findabc(h):
        for a in range(1,h):
            for d in range(1,h):
                b=d
                c=1000-a-d
                if (a**2+b**2==c**2) and (c>=0) and (a<b<c):
    print a,b,c #该程序会输出a,b,c的值
    print a*b*c findabc(1000)


    [Finished in 0.3s]

     第10题:

    2000000以内的质数和

    解法1:

    i=2
    count =0
    while i<2000000:
        if findPrime(i):#第7题中的一个函数
            count +=i
            i +=1
        else:
            i +=1
    
    print count

     解法2:

    import math
    list1=[]
    list2=[]
    n=2000000
    for i in range(0,n):
        list1.append(1)
    for i in range(2,int(math.sqrt(n))):
        sum=i
        if list1[sum]==1:
            while(sum+i<n):
                sum+=i
                list1[sum]=0
    for i in range(2,n):
        if list1[i]==1:
            list2.append(i)
    
    sum=0
    for i in list2:
        sum+=i
    print sum
    
  • 相关阅读:
    [导入]在.NET下如何实现密码Hash化
    [导入]强大的.NET反编译工具Reflector及插件
    [导入]XML数据岛(XML Data Island)
    验证视图状态 MAC 失败。处理办法
    ASP.NET格式化字符串
    .NET 开发框架技术资料搜集
    网页中图片大小自动调整三种方法
    用户 'azhk' 登录失败。原因: 未与信任 SQL Server 连接相关联。
    jstl及el表达式笔记
    杰普Core Java课程笔记1
  • 原文地址:https://www.cnblogs.com/fei-hsueh/p/3970403.html
Copyright © 2020-2023  润新知