九度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
****************************************************************/
编程算法爱好者。
浙公网安备 33010602011771号