第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
   }
}

#}



填充/相关