九度OJ 1040:Prime Number(质数) (递归)
- 题目描述:
-
Output the k-th prime number.
- 输入:
-
k≤10000
- 输出:
-
The k-th prime number.
- 样例输入:
-
3 7
- 样例输出:
-
5 17
思路:
求质数要注意时间复杂度,只需要搜到sqrt(n)即可判断是否为质数。
另外如果多次求解,可以预先存数组,这样避免多次求解。
代码:
#include <stdio.h> #include <math.h> int isprime(int n) { for (int i=2; i<=sqrt(n); i++) { if (n%i == 0) return 0; } return 1; } int kthprime(int k) { int n = 1; while (k--) { n++; while (! isprime(n)) n++; } return n; } int main(void) { int k; while (scanf("%d", &k) != EOF) { printf("%d\n", kthprime(k)); } return 0; } /************************************************************** Problem: 1040 User: liangrx06 Language: C Result: Accepted Time:70 ms Memory:928 kb ****************************************************************/
编程算法爱好者。