1
0
This commit is contained in:
2026-02-04 11:15:03 +08:00
commit 8b20a5dd21
125 changed files with 4177 additions and 0 deletions

7
problems/p35/Cargo.toml Normal file
View File

@@ -0,0 +1,7 @@
[package]
name = "p35"
version = "0.1.0"
edition = "2024"
[dependencies]
primal = "0.3.3"

43
problems/p35/src/main.rs Normal file
View File

@@ -0,0 +1,43 @@
use std::str::FromStr;
use primal::is_prime;
// 有02, 4, 5, 6, 8的必然不是
fn is_circular_prime(num: u32) -> bool {
if num == 2 || num == 3 || num == 5 || num == 7 {
return true;
}
let mut str_num = num.to_string();
if str_num.contains("0")
|| str_num.contains("2")
|| str_num.contains("4")
|| str_num.contains("5")
|| str_num.contains("6")
|| str_num.contains("8")
{
return false;
}
for _ in 0..str_num.len() {
let num = u32::from_str(&str_num).unwrap();
if !is_prime(num as u64) {
return false;
}
str_num = str_num[1..str_num.len()].to_string() + &str_num[0..1];
}
true
}
#[test]
fn test_is_circular_prime() {
assert!(is_circular_prime(2));
assert!(is_circular_prime(5));
assert!(is_circular_prime(13));
assert!(!is_circular_prime(4));
assert!(is_circular_prime(197));
}
fn main() {
let count = (0..1000000u32).filter(|x| is_circular_prime(*x)).count();
println!("{count}");
}