diff options
| author | Charles <sircharlesaze@gmail.com> | 2020-05-21 12:16:03 +0200 |
|---|---|---|
| committer | Charles <sircharlesaze@gmail.com> | 2020-05-21 12:16:03 +0200 |
| commit | fec9192bf1494a0180ec31388281667c132b7ee6 (patch) | |
| tree | 1533f2081cc6c8919a9030db8cfd056efcc6cbd1 | |
| parent | ec28f3d2a263440b167b2ae44033f2eae5bab88c (diff) | |
| download | project_euler-fec9192bf1494a0180ec31388281667c132b7ee6.tar.gz project_euler-fec9192bf1494a0180ec31388281667c132b7ee6.tar.bz2 project_euler-fec9192bf1494a0180ec31388281667c132b7ee6.zip | |
problem 4 5 in rust
| -rwxr-xr-x[-rw-r--r--] | generate.py | 2 | ||||
| -rw-r--r-- | rust/004-largest_palindrome_product.rs | 27 | ||||
| -rw-r--r-- | rust/005-smallest_multiple.rs | 34 |
3 files changed, 63 insertions, 0 deletions
diff --git a/generate.py b/generate.py index 7c69961..1d32a2d 100644..100755 --- a/generate.py +++ b/generate.py @@ -1,3 +1,5 @@ +#!/usr/bin/python + import requests import json from bs4 import BeautifulSoup diff --git a/rust/004-largest_palindrome_product.rs b/rust/004-largest_palindrome_product.rs new file mode 100644 index 0000000..c0b49bd --- /dev/null +++ b/rust/004-largest_palindrome_product.rs @@ -0,0 +1,27 @@ +/* +* Largest palindrome product +* Problem 4 +* +* 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. +*/ + +fn is_palindrome(n: u32) -> bool { + let s: String = n.to_string(); + let r: String = s.chars().rev().collect(); + s == r +} + +fn main() { + let mut largest = 0; + + for x in 100..1000 { + for y in 100..1000 { + if is_palindrome(x * y) && x * y > largest{ + largest = x * y + } + } + } + println!("{}", largest); +} diff --git a/rust/005-smallest_multiple.rs b/rust/005-smallest_multiple.rs new file mode 100644 index 0000000..ce671f9 --- /dev/null +++ b/rust/005-smallest_multiple.rs @@ -0,0 +1,34 @@ +/* +* Smallest multiple +* Problem 5 +* +* 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? +*/ + +fn main() { + let mut end = false; + let mut n = 2; + + // note to self: iterator are really slow 11s vs 1s without them. + loop { + + let mut d = 3; + while d <= 20 { + if n % d != 0 { + end = false; + break; + } else { + end = true; + } + d += 1; + } + + if end { + println!("{}", n); + break; + } + + n += 2; + } +} |
