欧拉项目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