Project Euler 1~5

Problem 1:

If we list all the natural numbers below 10 that are multiples of 3 or 5, we get 3, 5, 6 and 9. The sum of these multiples is 23.
Find the sum of all the multiples of 3 or 5 below 1000.

ans=0
for i in range(1,1000):
    if i%3==0 or i%5==0:
        ans+=i
print(ans)

Answer:233168


Problem 2:

Each new term in the Fibonacci sequence is generated by adding the previous two terms. By starting with 1 and 2, the first 10 terms will be:
1, 2, 3, 5, 8, 13, 21, 34, 55, 89, ...
By considering the terms in the Fibonacci sequence whose values do not exceed four million, find the sum of the even-valued terms.

a=1
b=2
ans=2
while a+b<=4000000:
    c=a+b
    if c%2==0:
        ans+=c
    a=b
    b=c
print(ans)

Answer:4613732


Problem 3:

The prime factors of 13195 are 5, 7, 13 and 29.
What is the largest prime factor of the number 600851475143 ?

a=[0 for i in range(1,5000000+10)]
p=a
tot=0
for i in range(2,5000000):
    if a[i]==0:
        tot+=1
        p[tot]=i
        j=i+i
        while j<5000000:
            a[j]=1
            j+=i
for i in range(tot,0,-1):
    if 600851475143%p[i]==0:
        print(p[i])
        break

Answer:6857


Problem 4:

A palindromic number reads the same both ways. The largest palindrome made from the product of two 2-digit numbers is 9009 = 91 × 99.
Find the largest palindrome made from the product of two 3-digit numbers.

ans=0
for i in range(100,1000):
    for j in range(100,1000):
        k=i*j
        k=str(k)
        f=1
        for l in range(0,len(k)//2):
            if k[l]!=k[len(k)-l-1]:
                f=0
                break
        if f:
            ans=max([ans,i*j])
print(ans)

Answer:906609


Problem 5:

2520 is the smallest number that can be divided by each of the numbers from 1 to 10 without any remainder.
What is the smallest positive number that is evenly divisible by all of the numbers from 1 to 20?

from fractions import gcd
def lcm(a,b):
    return a*b//gcd(a,b)
ans=2
for i in range(3,20+1):
    ans=lcm(ans,i)
print(ans)

Answer:232792560


By Charlie Pan

Apr 14,2014

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值