欧拉项目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
原文地址:https://www.cnblogs.com/fei-hsueh/p/3970403.html