aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCharles <sircharlesaze@gmail.com>2020-05-21 12:16:03 +0200
committerCharles <sircharlesaze@gmail.com>2020-05-21 12:16:03 +0200
commitfec9192bf1494a0180ec31388281667c132b7ee6 (patch)
tree1533f2081cc6c8919a9030db8cfd056efcc6cbd1
parentec28f3d2a263440b167b2ae44033f2eae5bab88c (diff)
downloadproject_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.py2
-rw-r--r--rust/004-largest_palindrome_product.rs27
-rw-r--r--rust/005-smallest_multiple.rs34
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;
+ }
+}