Compare commits
2 Commits
6c89f18e9d
...
e3f9ab49f3
Author | SHA1 | Date | |
---|---|---|---|
e3f9ab49f3 | |||
4e98bf2115 |
@@ -1,4 +1,13 @@
|
|||||||
module Lib where
|
module Lib (fib, primeFactors) where
|
||||||
|
|
||||||
fib :: [Integer]
|
fib :: [Integer]
|
||||||
fib = 1 : 2 : zipWith (+) fib (tail fib)
|
fib = 1 : 2 : zipWith (+) fib (tail fib)
|
||||||
|
|
||||||
|
primeFactors :: Integer -> [Integer]
|
||||||
|
primeFactors n = genPrimeFactors n 2
|
||||||
|
where
|
||||||
|
genPrimeFactors :: Integer -> Integer -> [Integer]
|
||||||
|
genPrimeFactors n c
|
||||||
|
| c == n = [n]
|
||||||
|
| mod n c /= 0 = genPrimeFactors n (c + 1)
|
||||||
|
| otherwise = c : genPrimeFactors (div n c) c
|
||||||
|
7
haskell/p3.hs
Normal file
7
haskell/p3.hs
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
import Lib (primeFactors)
|
||||||
|
|
||||||
|
main :: IO ()
|
||||||
|
main = putStr $ show solve
|
||||||
|
|
||||||
|
solve :: Integer
|
||||||
|
solve = last $ primeFactors 600851475143
|
@@ -2,3 +2,11 @@
|
|||||||
name = "eulerfunt"
|
name = "eulerfunt"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
|
|
||||||
|
[[bin]]
|
||||||
|
name = "p1"
|
||||||
|
path = "./src/p1.rs"
|
||||||
|
|
||||||
|
[[bin]]
|
||||||
|
name = "p2"
|
||||||
|
path = "./src/p2.rs"
|
||||||
|
@@ -10,9 +10,7 @@ version = "0.1.0"
|
|||||||
edition = "2021"
|
edition = "2021"
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
if ! [ -e ./src/p*.rs ]; then
|
[[ ! $(ls ./src/p*.rs) ]] && exit 0
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
for problem in ./src/p*.rs; do
|
for problem in ./src/p*.rs; do
|
||||||
file=${problem##*/}
|
file=${problem##*/}
|
||||||
|
@@ -0,0 +1,11 @@
|
|||||||
|
pub fn fib_till(lim: u32) -> Vec<u32> {
|
||||||
|
let mut ret: Vec<u32> = vec![1, 2];
|
||||||
|
let mut n: usize = 2;
|
||||||
|
|
||||||
|
while ret[n - 1] <= lim {
|
||||||
|
ret.push(ret[n - 1] + ret[n - 2]);
|
||||||
|
n += 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
ret
|
||||||
|
}
|
||||||
|
4
rust/src/p1.rs
Normal file
4
rust/src/p1.rs
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
fn main() {
|
||||||
|
let multiple_sum = |x| (x..1000).step_by(x).into_iter().sum::<usize>();
|
||||||
|
print!("{}", multiple_sum(3) + multiple_sum(5) - multiple_sum(15));
|
||||||
|
}
|
6
rust/src/p2.rs
Normal file
6
rust/src/p2.rs
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
use eulerfunt::fib_till;
|
||||||
|
|
||||||
|
fn main() {
|
||||||
|
let evenfib = fib_till(4000000).into_iter().filter(|x| x % 2 == 0);
|
||||||
|
print!("{}", evenfib.sum::<u32>());
|
||||||
|
}
|
Reference in New Issue
Block a user