九度OJ 1040:Prime Number(质数) (递归)

时间限制: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
****************************************************************/


posted on 2015-10-18 17:14  梁山伯  阅读(237)  评论(0编辑  收藏  举报

导航