use rug::{Complete, Integer}; use std::io; fn main() { println!("Введите положительное число:"); let mut p = String::new(); let stdin = io::stdin(); match stdin.read_line(&mut p) { Ok(_) => (), Err(_) => { println!("Произошла ошибка при чтении из стандартного ввода"); } } let p = match Integer::parse(p) { Ok(parsed) => parsed.complete(), Err(_) => { println!("Не удалось считать число"); return (); } }; let mut is_prime = true; for i in 1..30 { let a: Integer = p.clone() - i; if a <= 0 { break; } let p_minus_1 = p.clone() - 1; let r = Integer::from(a.pow_mod_ref(&p_minus_1, &p).unwrap()); if r != 1 { is_prime = false; break; } } if is_prime { println!("Число {} является простым", &p); } else { println!("Число не является простым"); } }