aboutsummaryrefslogtreecommitdiff
path: root/rust/002-even_fibonacci_numbers.rs
diff options
context:
space:
mode:
authorCharles <sircharlesaze@gmail.com>2020-05-21 11:42:33 +0200
committerCharles <sircharlesaze@gmail.com>2020-05-21 11:42:33 +0200
commitec28f3d2a263440b167b2ae44033f2eae5bab88c (patch)
tree2c170cd09786264ea5f017973f15297734268404 /rust/002-even_fibonacci_numbers.rs
parent9af65c8ac721024d0e45a2a6bde5c3f9fe638516 (diff)
downloadproject_euler-ec28f3d2a263440b167b2ae44033f2eae5bab88c.tar.gz
project_euler-ec28f3d2a263440b167b2ae44033f2eae5bab88c.tar.bz2
project_euler-ec28f3d2a263440b167b2ae44033f2eae5bab88c.zip
problem 1 2 3 in rust
Diffstat (limited to 'rust/002-even_fibonacci_numbers.rs')
-rw-r--r--rust/002-even_fibonacci_numbers.rs41
1 files changed, 41 insertions, 0 deletions
diff --git a/rust/002-even_fibonacci_numbers.rs b/rust/002-even_fibonacci_numbers.rs
new file mode 100644
index 0000000..1f95f3a
--- /dev/null
+++ b/rust/002-even_fibonacci_numbers.rs
@@ -0,0 +1,41 @@
+/*
+* Even Fibonacci numbers
+* 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.
+*/
+
+struct Fib {
+ a: u32,
+ b: u32
+}
+
+impl Iterator for Fib {
+ type Item = u32;
+
+ fn next(&mut self) -> Option<u32> {
+ let c = self.a + self.b;
+ self.a = self.b;
+ self.b = c;
+ return Some(c)
+ }
+}
+
+fn main() {
+ let fib = Fib { a: 0, b: 1 };
+ let mut sum = 0;
+
+ for f in fib {
+ if f > 4_000_000 {
+ break;
+ }
+ if f % 2 == 0 {
+ sum += f;
+ }
+ }
+ println!("{}", sum);
+}