Problem 8 - Largest Product in a Series

product
Author

Vincent Clemson

Published

January 19, 2026

Modified

February 2, 2026

Top down view of Sigiriya Fortress - Lion Rock   Sigirya, Sri Lanka - May 2nd, 2025

Top down view of Sigiriya Fortress - Lion Rock
Sigirya, Sri Lanka - May 2nd, 2025

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

73167176531330624919225119674426574742355349194934
96983520312774506326239578318016984801869478851843
85861560789112949495459501737958331952853208805511
12540698747158523863050715693290963295227443043557
66896648950445244523161731856403098711121722383113
62229893423380308135336276614282806444486645238749
30358907296290491560440772390713810515859307960866
70172427121883998797908792274921901699720888093776
65727333001053367881220235421809751254540594752243
52584907711670556013604839586446706324415722155397
53697817977846174064955149290862569321978468622482
83972241375657056057490261407972968652414535100474
82166370484403199890008895243450658541227588666881
16427171479924442928230863465674813919123162824586
17866458359124566529476545682848912883142607690042
24219022671055626321111109370544217506941658960408
07198403850962455444362981230987879927244284909188
84580156166097919133875499200524063689912560717606
05886116467109405077541002256983155200055935729725
71636269561882670428252483600823257530420752963450

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

https://projecteuler.net/problem=8

Development

This is straightforward. We can loop through all consecutive 13-digit sequences in the long number, calculate the products, and then find the max.

R

Answer 1

Code
x <- "
73167176531330624919225119674426574742355349194934
96983520312774506326239578318016984801869478851843
85861560789112949495459501737958331952853208805511
12540698747158523863050715693290963295227443043557
66896648950445244523161731856403098711121722383113
62229893423380308135336276614282806444486645238749
30358907296290491560440772390713810515859307960866
70172427121883998797908792274921901699720888093776
65727333001053367881220235421809751254540594752243
52584907711670556013604839586446706324415722155397
53697817977846174064955149290862569321978468622482
83972241375657056057490261407972968652414535100474
82166370484403199890008895243450658541227588666881
16427171479924442928230863465674813919123162824586
17866458359124566529476545682848912883142607690042
24219022671055626321111109370544217506941658960408
07198403850962455444362981230987879927244284909188
84580156166097919133875499200524063689912560717606
05886116467109405077541002256983155200055935729725
71636269561882670428252483600823257530420752963450
"
x <- lapply(x, strsplit, "") |> unlist()
x <- as.integer(x[which(x != '\n')])

m <- 13
p <- c()
for (i in m:length(x)) {
  p <- c(p, prod(x[(i-m+1):i]))
}
i <- which.max(p)
ans <- list(max = max(p), digits = x[i:(i+m-1)])
prod(ans$digits) == ans$max
ans
[1] TRUE
$max
[1] 23514624000

$digits
 [1] 5 5 7 6 6 8 9 6 6 4 8 9 5

Python

Answer 1

Code
import time
from math import prod

x = """
73167176531330624919225119674426574742355349194934
96983520312774506326239578318016984801869478851843
85861560789112949495459501737958331952853208805511
12540698747158523863050715693290963295227443043557
66896648950445244523161731856403098711121722383113
62229893423380308135336276614282806444486645238749
30358907296290491560440772390713810515859307960866
70172427121883998797908792274921901699720888093776
65727333001053367881220235421809751254540594752243
52584907711670556013604839586446706324415722155397
53697817977846174064955149290862569321978468622482
83972241375657056057490261407972968652414535100474
82166370484403199890008895243450658541227588666881
16427171479924442928230863465674813919123162824586
17866458359124566529476545682848912883142607690042
24219022671055626321111109370544217506941658960408
07198403850962455444362981230987879927244284909188
84580156166097919133875499200524063689912560717606
05886116467109405077541002256983155200055935729725
71636269561882670428252483600823257530420752963450
"""
x = [int(i) for i in list(x) if i != '\n']

m = 13
p = []
for i in range(13, len(x)):
  p.append(prod(x[i-m:i]))
i = p.index(max(p))
ans = {'max': max(p), 'digits': x[i:i+m]}
print(prod(ans['digits']) == ans['max'])
print(ans)
True
{'max': 23514624000, 'digits': [5, 5, 7, 6, 6, 8, 9, 6, 6, 4, 8, 9, 5]}
Back to top

Reuse

© 2023-2026 Vincent Clemson | This post is licensed under <a href='http://creativecommons.org/licenses/by-nc-sa/4.0/' target='_blank'>CC BY-NC-SA 4.0</a>

Citation

For attribution, please cite this work as:
Clemson, Vincent. 2026. “Problem 8 - Largest Product in a Series.” January 19, 2026. https://prncevince.xyz/euler/problem/0008.html.