Cullen and Woodall numbers: Difference between revisions

Content added Content deleted
No edit summary
(Added Rust solution)
Line 630: Line 630:
1 7 23 63 159 383 895 2047 4607 10239 22527 49151 106495 229375 491519 1048575 2228223 4718591 9961471 20971519
1 7 23 63 159 383 895 2047 4607 10239 22527 49151 106495 229375 491519 1048575 2228223 4718591 9961471 20971519
done...
done...
</pre>

=={{header|Rust}}==
<lang rust>// [dependencies]
// rug = "1.15.0"

use rug::Integer;
use rug::integer::IsPrime;

fn cullen_number(n: u32) -> Integer {
let num = Integer::from(n);
(num << n) + 1
}

fn woodall_number(n: u32) -> Integer {
let num = Integer::from(n);
(num << n) - 1
}

fn main() {
println!("First 20 Cullen numbers:");
for n in 1..21 {
if n > 1 {
print!(" ");
}
print!("{}", cullen_number(n));
}

println!("\n\nFirst 20 Woodall numbers:");
for n in 1..21 {
if n > 1 {
print!(" ");
}
print!("{}", woodall_number(n));
}

println!("\n\nFirst 5 Cullen primes in terms of n:");
let mut n = 1;
let mut count = 0;
while count != 5 {
if cullen_number(n).is_probably_prime(25) != IsPrime::No {
if count > 0 {
print!(" ");
}
print!("{}", n);
count += 1;
}
n += 1;
}

println!("\n\nFirst 5 Woodall primes in terms of n:");
n = 1;
count = 0;
while count != 12 {
if woodall_number(n).is_probably_prime(25) != IsPrime::No {
if count > 0 {
print!(" ");
}
print!("{}", n);
count += 1;
}
n += 1;
}
println!();
}</lang>

{{out}}
<pre>
First 20 Cullen numbers:
3 9 25 65 161 385 897 2049 4609 10241 22529 49153 106497 229377 491521 1048577 2228225 4718593 9961473 20971521

First 20 Woodall numbers:
1 7 23 63 159 383 895 2047 4607 10239 22527 49151 106495 229375 491519 1048575 2228223 4718591 9961471 20971519

First 5 Cullen primes in terms of n:
1 141 4713 5795 6611

First 5 Woodall primes in terms of n:
2 3 6 30 75 81 115 123 249 362 384 462
</pre>
</pre>