use rug::{Complete, Integer}; use std::io; fn main() { 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 fact = Integer::from(1u32).clone(); let mut i = p.clone() - 1; while i != 1 { fact *= &i; i -= 1; } fact += 1; let (_, r) = fact.div_rem_ref(&p).complete(); if r == 0 { println!("Число {} является простым", &p); } else { println!("Число не является простым"); } }