第n个素数-Nth Prime
1. Readme
第n个素数
给定一个数n
,确定第n
个素数是什么.
如: 列出前六个素数:2, 3, 5、7, 11和13
,我们可以看到第六素数是13
.
如果您的语言标准库中提供了处理素数的方法,请假装它们不存在,并自己实现它们.
Source
A variation on Problem 7 at Project Euler http://projecteuler.net/problem=7
2. 开始你的表演
pub fn nth(n: u32) -> u32 { unimplemented!("What is the 0-indexed {}th prime number?", n) }
3. 测试代码查看
# #![allow(unused_variables)] #fn main() { #[test] fn test_first_prime() { assert_eq!(nth(0), 2); } #[test] //#[ignore] fn test_second_prime() { assert_eq!(nth(1), 3); } #[test] //#[ignore] fn test_sixth_prime() { assert_eq!(nth(5), 13); } #[test] //#[ignore] fn test_big_prime() { assert_eq!(nth(10000), 104743); } #}
4. 答案
# #![allow(unused_variables)] #fn main() { fn is_prime(n: u32) -> bool { let mut i = 3; while (i * i) < (n + 1) { if n % i == 0 { return false; } i += 1; } return true; } pub fn nth(n: u32) -> u32 { if n == 0 { 2 } else { let mut count = 0; let mut candidate = 1; while count < n { candidate += 2; if is_prime(candidate) { count += 1; } } candidate } } #}