sicily 1561.PRIME

来源:互联网 发布:淘宝访客突然少了很多 编辑:程序博客网 时间:2024/04/30 15:36

解题思路:打表,用筛法求素数.

#include <iostream>#include <math.h>using namespace std;#define MAXLEN 110010int isPrime[MAXLEN];int prime[10000];void sieve(int arr[], int len)//筛法求素数{    int i, j;    int sqrt_len = sqrt(double(len));//len必须明确指出属于float,double或者long double的一种,不然报错    for(i = 2; i < len; i++)        arr[i] = 1;    for(i = 2; i < sqrt_len; i++)    {        if (arr[i])        {            for (j = i; j*i <= len; j++)                arr[j * i] = 0;        }    }    int cnt = 0;    prime[0] = 1;    for(i = 2; i < len; i++)    {        if(arr[i] == 1)        {            prime[++cnt] = i;            if(cnt == 10000)                break;        }    }}int main(){    sieve(isPrime, MAXLEN);    int n;    cin >> n;    cout << prime[n] << endl;    return 0;}


0 0
原创粉丝点击