Difference of Squares in Rust
문제
Difference of Squares in RustFind the difference between the square of the sum and the sum of the squares of the first N natural numbers.
참고할 자료와 개념
for 문
1..n과1..=n의 차이- The Rust Programming Language
- Easy Rust
(심화) iterator, closure, map, sum
- The Rust Programming Language
- Easy Rust
풀이된 예제
명령형
pub fn square_of_sum(n: u32) -> u32 {
let mut sum = 0;
for i in 1..=n {
sum += i;
}
sum * sum
}
pub fn sum_of_squares(n: u32) -> u32 {
let mut sum = 0;
for i in 1..=n {
sum += i * i;
}
sum
}
pub fn difference(n: u32) -> u32 {
square_of_sum(n) - sum_of_squares(n)
}
함수형 이터레이터
pub fn square_of_sum(n: u32) -> u32 {
(1..=n).sum::<u32>().pow(2)
}
pub fn sum_of_squares(n: u32) -> u32 {
(1..=n).map(|x| x.pow(2)).sum()
}
pub fn difference(n: u32) -> u32 {
square_of_sum(n) - sum_of_squares(n)
}
수학
pub fn square_of_sum(n: u32) -> u32 {
(n * (n + 1) / 2).pow(2)
}
pub fn sum_of_squares(n: u32) -> u32 {
n * (n + 1) * (2 * n + 1) / 6
}
pub fn difference(n: u32) -> u32 {
square_of_sum(n) - sum_of_squares(n)
}