Giuga numbers: Difference between revisions
Content added Content deleted
No edit summary |
No edit summary |
||
Line 1,127: | Line 1,127: | ||
=={{header|Rust}}== |
=={{header|Rust}}== |
||
<syntaxhighlight lang="rust"> |
|||
use prime_tools ; |
|||
fn prime_decomposition( mut number : u32) -> Vec<u32> { |
|||
let mut divisors : Vec<u32> = Vec::new( ) ; |
|||
let mut divisor : u32 = 2 ; |
|||
while number != 1 { |
|||
if number % divisor == 0 { |
|||
divisors.push( divisor ) ; |
|||
number /= divisor ; |
|||
} |
|||
else { |
|||
divisor += 1 ; |
|||
} |
|||
} |
|||
divisors |
|||
} |
|||
fn is_giuga( num : u32 ) -> bool { |
|||
let prime_factors : Vec<u32> = prime_decomposition( num ) ; |
|||
! prime_tools::is_u32_prime( num ) && |
|||
prime_factors.into_iter( ).all( |n : u32| (num/n -1) % n == 0 ) |
|||
} |
|||
fn main() { |
|||
let mut giuga_numbers : Vec<u32> = Vec::new( ) ; |
|||
let mut num : u32 = 2 ; |
|||
while giuga_numbers.len( ) != 4 { |
|||
if is_giuga( num ) { |
|||
giuga_numbers.push( num ) ; |
|||
} |
|||
num += 1 ; |
|||
} |
|||
println!("{:?}" , giuga_numbers ) ; |
|||
}</syntaxhighlight> |
|||
{{out}} |
|||
<pre> |
|||
[30, 858, 1722, 66198] |
|||
</pre> |
|||
=={{header|Wren}}== |
=={{header|Wren}}== |