diff --git a/src/bin/problem_5.rs b/src/bin/problem_5.rs
new file mode 100644
index 0000000..aae1bee
--- /dev/null
+++ b/src/bin/problem_5.rs
@@ -0,0 +1,23 @@
+fn main() {
+    let result = square_of_sum(100) - sum_of_squares(100);
+    println!("Result: {}", result);
+}
+
+fn square_of_sum(range: i64) -> i64 {
+    (1..=range).sum::<i64>().pow(2)
+}
+
+fn sum_of_squares(range: i64) -> i64 {
+    (1..=range).map(|n| n.pow(2)).sum()
+}
+
+#[cfg(test)]
+mod tests {
+    use crate::{square_of_sum, sum_of_squares};
+
+    #[test]
+    fn it_works() {
+        let result = square_of_sum(10) - sum_of_squares(10);
+        assert_eq!(result, 2640);
+    }
+}