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

 

你可能感兴趣的:(python)