Euler problems/51 to 60
From HaskellWiki
(→[http://projecteuler.net/index.php?section=problems&id=52 Problem 52]: a solution) |
(add solution for #57) |
||
| Line 66: | Line 66: | ||
Solution: | Solution: | ||
<haskell> | <haskell> | ||
| - | problem_57 = | + | problem_57 = length $ filter topHeavy $ take 1000 convergents |
| + | where topHeavy r = numDigits (numerator r) > numDigits (denominator r) | ||
| + | numDigits = length . show | ||
| + | convergents = iterate next (3%2) | ||
| + | next r = 1 + 1/(1+r) | ||
</haskell> | </haskell> | ||
Revision as of 20:19, 20 June 2007
Contents |
1 Problem 51
Find the smallest prime which, by changing the same part of the number, can form eight different primes.
Solution:
problem_51 = undefined
2 Problem 52
Find the smallest positive integer, x, such that 2x, 3x, 4x, 5x, and 6x, contain the same digits in some order.
Solution:
problem_52 = head [n | n <- [1..], digits (2*n) == digits (3*n), digits (3*n) == digits (4*n), digits (4*n) == digits (5*n), digits (5*n) == digits (6*n)] where digits = sort . show
3 Problem 53
How many values of C(n,r), for 1 ≤ n ≤ 100, exceed one-million?
Solution:
problem_53 = length [n | n <- [1..100], r <- [1..n], n `choose` r > 10^6] where n `choose` r | r > n || r < 0 = 0 | otherwise = foldl (\z j -> z*(n-j+1) `div` j) n [2..r]
4 Problem 54
How many hands did player one win in the game of poker?
Solution:
problem_54 = undefined
5 Problem 55
How many Lychrel numbers are there below ten-thousand?
Solution:
problem_55 = length $ filter isLychrel [1..9999] where isLychrel n = all notPalindrome (take 50 (tail (iterate revadd n))) notPalindrome s = (show s) /= reverse (show s) revadd n = n + rev n where rev n = read (reverse (show n))
6 Problem 56
Considering natural numbers of the form, ab, finding the maximum digital sum.
Solution:
problem_56 = maximum [dsum (a^b) | a <- [1..99], b <-[1..99]] where dsum 0 = 0 dsum n = let ( d, m ) = n `divMod` 10 in m + ( dsum d )
7 Problem 57
Investigate the expansion of the continued fraction for the square root of two.
Solution:
problem_57 = length $ filter topHeavy $ take 1000 convergents where topHeavy r = numDigits (numerator r) > numDigits (denominator r) numDigits = length . show convergents = iterate next (3%2) next r = 1 + 1/(1+r)
8 Problem 58
Investigate the number of primes that lie on the diagonals of the spiral grid.
Solution:
problem_58 = undefined
9 Problem 59
Using a brute force attack, can you decrypt the cipher using XOR encryption?
Solution:
problem_59 = undefined
10 Problem 60
Find a set of five primes for which any two primes concatenate to produce another prime.
Solution:
problem_60 = undefined
