Data update
This commit is contained in:
parent
4d5544505c
commit
4924dd0264
3073 changed files with 55820 additions and 4408 deletions
97
Task/Duffinian-numbers/Rust/duffinian-numbers.rs
Normal file
97
Task/Duffinian-numbers/Rust/duffinian-numbers.rs
Normal file
|
|
@ -0,0 +1,97 @@
|
|||
fn gcd(mut a: i32, mut b: i32) -> i32 {
|
||||
while b != 0 {
|
||||
let temp = b;
|
||||
b = a % b;
|
||||
a = temp;
|
||||
}
|
||||
a
|
||||
}
|
||||
|
||||
fn duffinian(n: i32) -> bool {
|
||||
if n == 2 {
|
||||
return false;
|
||||
}
|
||||
|
||||
let mut total = 1;
|
||||
let mut power = 2;
|
||||
let m = n;
|
||||
let mut n = n;
|
||||
|
||||
// Handle powers of 2
|
||||
while (n & 1) == 0 {
|
||||
total += power;
|
||||
power <<= 1;
|
||||
n >>= 1;
|
||||
}
|
||||
|
||||
// Handle odd prime factors
|
||||
let mut p = 3;
|
||||
while p * p <= n {
|
||||
let mut sum = 1;
|
||||
power = p;
|
||||
while n % p == 0 {
|
||||
sum += power;
|
||||
power *= p;
|
||||
n /= p;
|
||||
}
|
||||
total *= sum;
|
||||
p += 2;
|
||||
}
|
||||
|
||||
// Check if n is composite
|
||||
if m == n {
|
||||
return false;
|
||||
}
|
||||
|
||||
// Handle remaining prime factor
|
||||
if n > 1 {
|
||||
total *= n + 1;
|
||||
}
|
||||
|
||||
gcd(total, m) == 1
|
||||
}
|
||||
|
||||
fn main() {
|
||||
println!("First 50 Duffinian numbers:");
|
||||
let mut count = 0;
|
||||
let mut n = 1;
|
||||
|
||||
while count < 50 {
|
||||
if duffinian(n) {
|
||||
print!("{:3}", n);
|
||||
count += 1;
|
||||
if count % 10 == 0 {
|
||||
println!();
|
||||
} else {
|
||||
print!(" ");
|
||||
}
|
||||
}
|
||||
n += 1;
|
||||
}
|
||||
|
||||
println!("\nFirst 50 Duffinian triplets:");
|
||||
let mut n = 1;
|
||||
let mut m = 0;
|
||||
let mut count = 0;
|
||||
|
||||
while count < 50 {
|
||||
if duffinian(n) {
|
||||
m += 1;
|
||||
} else {
|
||||
m = 0;
|
||||
}
|
||||
|
||||
if m == 3 {
|
||||
let triplet = format!("({}, {}, {})", n - 2, n - 1, n);
|
||||
print!("{:<24}", triplet);
|
||||
count += 1;
|
||||
if count % 3 == 0 {
|
||||
println!();
|
||||
} else {
|
||||
print!(" ");
|
||||
}
|
||||
}
|
||||
n += 1;
|
||||
}
|
||||
println!();
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue