首页 > 学院 > 开发设计 > 正文

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

2019-11-14 17:36:31
字体:
来源:转载
供稿:网友

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

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

第一题:

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

 

第二题:

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

 

第三题:

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

 

 

第四题:

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

count=1for 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=3f=1for 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*iprint f

 

第五题,第六题略

第七题

求第10001个质数。

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


[Finished in 0.3s]

 第10题:

2000000以内的质数和

解法1:

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

 解法2:

import mathlist1=[]list2=[]n=2000000for 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]=0for i in range(2,n):    if list1[i]==1:        list2.append(i)sum=0for i in list2:    sum+=iprint sum

 


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表