Amicable pairs: Difference between revisions
Content added Content deleted
Line 5,945: | Line 5,945: | ||
=={{header|Rust}}== |
=={{header|Rust}}== |
||
<syntaxhighlight lang="rust"> |
<syntaxhighlight lang="rust"> |
||
fn sum_of_divisors(val: u32) -> u32 { |
|||
(1..val/2+1).filter(|n| val % n == 0) |
(1..val/2+1).filter(|n| val % n == 0) |
||
.fold(0, |sum, n| sum + n) |
.fold(0, |sum, n| sum + n) |
||
Line 5,960: | Line 5,961: | ||
} |
} |
||
}</syntaxhighlight> |
}</syntaxhighlight> |
||
{{out}} |
{{out}} |
||
<pre> |
<pre> |
||
Line 5,970: | Line 5,972: | ||
14595 12285 |
14595 12285 |
||
18416 17296 |
18416 17296 |
||
</pre> |
|||
<syntaxhighlight lang="rust"> |
|||
fn main() { |
|||
const RANGE_MAX: u32 = 20_000; |
|||
let proper_divs = |n: u32| -> Vec<u32> { |
|||
(1..=(n + 1) / 2).filter(|&x| n % x == 0).collect() |
|||
}; |
|||
let n2d: Vec<u32> = (1..=RANGE_MAX).map(|n| proper_divs(n).iter().sum()).collect(); |
|||
for (n, &div_sum) in n2d.iter().enumerate() { |
|||
let n = n as u32 + 1; |
|||
if n < div_sum && div_sum <= RANGE_MAX && n2d[div_sum as usize - 1] == n { |
|||
println!("Amicable pair: {} and {} with proper divisors:", n, div_sum); |
|||
println!(" {:?}", proper_divs(n)); |
|||
println!(" {:?}", proper_divs(div_sum)); |
|||
} |
|||
} |
|||
} |
|||
</syntaxhighlight> |
|||
{{out}} |
|||
<pre> |
|||
Amicable pair: 220 and 284 with proper divisors: |
|||
[1, 2, 4, 5, 10, 11, 20, 22, 44, 55, 110] |
|||
[1, 2, 4, 71, 142] |
|||
Amicable pair: 1184 and 1210 with proper divisors: |
|||
[1, 2, 4, 8, 16, 32, 37, 74, 148, 296, 592] |
|||
[1, 2, 5, 10, 11, 22, 55, 110, 121, 242, 605] |
|||
Amicable pair: 2620 and 2924 with proper divisors: |
|||
[1, 2, 4, 5, 10, 20, 131, 262, 524, 655, 1310] |
|||
[1, 2, 4, 17, 34, 43, 68, 86, 172, 731, 1462] |
|||
Amicable pair: 5020 and 5564 with proper divisors: |
|||
[1, 2, 4, 5, 10, 20, 251, 502, 1004, 1255, 2510] |
|||
[1, 2, 4, 13, 26, 52, 107, 214, 428, 1391, 2782] |
|||
Amicable pair: 6232 and 6368 with proper divisors: |
|||
[1, 2, 4, 8, 19, 38, 41, 76, 82, 152, 164, 328, 779, 1558, 3116] |
|||
[1, 2, 4, 8, 16, 32, 199, 398, 796, 1592, 3184] |
|||
Amicable pair: 10744 and 10856 with proper divisors: |
|||
[1, 2, 4, 8, 17, 34, 68, 79, 136, 158, 316, 632, 1343, 2686, 5372] |
|||
[1, 2, 4, 8, 23, 46, 59, 92, 118, 184, 236, 472, 1357, 2714, 5428] |
|||
Amicable pair: 12285 and 14595 with proper divisors: |
|||
[1, 3, 5, 7, 9, 13, 15, 21, 27, 35, 39, 45, 63, 65, 91, 105, 117, 135, 189, 195, 273, 315, 351, 455, 585, 819, 945, 1365, 1755, 2457, 4095] |
|||
[1, 3, 5, 7, 15, 21, 35, 105, 139, 417, 695, 973, 2085, 2919, 4865] |
|||
Amicable pair: 17296 and 18416 with proper divisors: |
|||
[1, 2, 4, 8, 16, 23, 46, 47, 92, 94, 184, 188, 368, 376, 752, 1081, 2162, 4324, 8648] |
|||
[1, 2, 4, 8, 16, 1151, 2302, 4604, 9208] |
|||
</pre> |
</pre> |
||