歐拉項目python代碼(1--10)

歐拉計劃(Project Euler)是一個解題網站,站內提供了一系列數學題供用戶解答。python

如下代碼均爲本人親自編寫,僅保證答案與歐拉項目的答案相同。至於代碼質量,能力有限,只能盡力而爲。app

第一題:

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的乘積spa

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之內的質數和code

解法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
相關文章
相關標籤/搜索