时间限制:1 秒
内存限制:32 兆
特殊判题:否
提交:5278
解决:2180
- 题目描述:
- Output the k-th prime number.
- 输入:
- k≤10000
- 输出:
- The k-th prime number.
- 样例输入:
-
3 7
- 样例输出:
-
5 17
- 来源:
- 2008年上海交通大学计算机研究生机试真题
思路:
求质数要注意时间复杂度,只需要搜到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
****************************************************************/