Project Euler (1–10)

  • 819
  • 6 min

1. Multiples of 3 and 5

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.

直接计算:找出范围内所有能被 3 或 5 整除的数字,再求和。边界要小心。

wl
Total @ Select[Range[1000 - 1], Or @@ Divisible[#, {3, 5}] &]
(* 233168 *)

2. Even Fibonacci numbers

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.

Fibonacci 序列增长速度还是挺快的,试几下找到上(40),然后选出偶数、求和:

wl
Total @ Select[Array[Fibonacci, 40], # < 4*^6 && EvenQ[#] &]
(* 4613732 *)

3. Largest prime factor

The prime factors of 13195 are 5, 7, 13 and 29.

What is the largest prime factor of the number 600851475143?

内置功能:

wl
FactorInteger[600851475143][[-1, 1]]
(* 6857 *)

4. Largest palindrome product

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.

枚举法。列出所有三位数的乘积,反向排列再找第一个回文数。注意 Array 会比 Table 快一些,但语法有所不同;回文数在 10.3 之后可通过内置函数 PalindromeQ 来判别。

wl
SelectFirst[PalindromeQ] @ ReverseSort @ Catenate @ Array[Times, {899, 899}, {100, 100}]
(* 906609 *)

5. Smallest multiple

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?

其实就是 1 到 20 的最小公倍数:

wl
LCM @@ Range[20]
(* 232792560 *)

6. Sum square difference

The sum of the squares of the first ten natural numbers is,

1² + 2² + … + 10² = 385

The square of the sum of the first ten natural numbers is,

(1 + 2 + … + 10)² = 55² = 3025

Hence the difference between the sum of the squares of the first ten natural numbers and the square of the sum is 3025 − 385 = 2640.

Find the difference between the sum of the squares of the first one hundred natural numbers and the square of the sum.

中学级别的数列求和题目:

wl
Sum[i, {i, n}]^2 - Sum[i^2, {i, n}] /. n -> 100
(* 25164150 *)

7. 10001st prime

By listing the first six prime numbers: 2, 3, 5, 7, 11, and 13, we can see that the 6th prime is 13.

What is the 10001st prime number?

求素数都没有也配叫数学软件?

wl
Prime[10001]
(* 104743 *)

8. Largest product in a series

The four adjacent digits in the 1000-digit number that have the greatest product are 9 × 9 × 8 × 9 = 5832.

73167176531330624919225119674426574742355349194934
96983520312774506326239578318016984801869478851843

71636269561882670428252483600823257530420752963450

Find the thirteen adjacent digits in the 1000-digit number that have the greatest product. What is the value of this product?

简单做一下划分,只有 988 组,完全可以直接算。\ 表示断行,即使是数字也可以断开。

wl
Max[Times @@@ Partition[IntegerDigits[#], 13, 1]] & @
73167176531330624919225119674426574742355349194934\
96983520312774506326239578318016984801869478851843\
85861560789112949495459501737958331952853208805511\
12540698747158523863050715693290963295227443043557\
66896648950445244523161731856403098711121722383113\
62229893423380308135336276614282806444486645238749\
30358907296290491560440772390713810515859307960866\
70172427121883998797908792274921901699720888093776\
65727333001053367881220235421809751254540594752243\
52584907711670556013604839586446706324415722155397\
53697817977846174064955149290862569321978468622482\
83972241375657056057490261407972968652414535100474\
82166370484403199890008895243450658541227588666881\
16427171479924442928230863465674813919123162824586\
17866458359124566529476545682848912883142607690042\
24219022671055626321111109370544217506941658960408\
07198403850962455444362981230987879927244284909188\
84580156166097919133875499200524063689912560717606\
05886116467109405077541002256983155200055935729725\
71636269561882670428252483600823257530420752963450
(* 23514624000 *)

9. Special Pythagorean triplet

A Pythagorean triplet is a set of three natural numbers, a < b < c, for which,

a² + b² = c²

For example, 3² + 4² = 9 + 16 = 25 = 5².

There exists exactly one Pythagorean triplet for which a + b + c = 1000. Find the product abc.

既然知道存在唯一解就可以直接 Solve 了。PositiveIntegers 这样的数域是 12.0 引入的新功能。

wl
First[a * b * c /. Solve[{a^2 + b^2 == c^2, a + b + c == 1000}, {a, b, c}, PositiveIntegers]]
(* 31875000 *)

10. Summation of primes

The sum of the primes below 10 is 2 + 3 + 5 + 7 = 17.

Find the sum of all the primes below two million.

逐字把英语翻译成 Wolfram Language 即可。PrimePi[x] 表示小于等于 x 的素数数目。

wl
Total @ Prime @ Range @ PrimePi[2*^6]
(* 142913828922 *)