Project Euler Problem 7: 10001st prime

来源:互联网 发布:java输出回文数 编辑:程序博客网 时间:2024/04/29 09:16

10001st prime

Problem 7

By listing the first six prime numbers: 2, 3, 5, 7, 11, and 13, we can see that the 6th prime is 13.

What is the 10 001st prime number?


C++:

#include <iostream>#include <cmath>using namespace std;const int MAXN = 10001;int prime[MAXN+1] = {2, 3};bool isprime(int n){    int q=sqrt(n), i=1;    while(prime[i] <= q)        if(n % prime[i] == 0)            return false;        else            i++;    return true;}void maketable(int n){    int i = 2, val = 5;    while(i < n) {        if(isprime(val))            prime[i++] = val;        val += 2;    }}int main(){    int n;    maketable(MAXN);    while(cin >> n)        cout << prime[n - 1] << endl;    return 0;}


C++:

#include <iostream>#include <cmath>using namespace std;const int MAXN = 10001;int prime[MAXN+2] = {2, 3, 5};bool isprime(int n){    int q=sqrt(n), i=1;    while(prime[i] <= q)        if(n % prime[i] == 0)            return false;        else            i++;    return true;}void maketable(int n){    int val1 = 1, val5 = 5;    for(int i=3; i<=n;) {        val1 += 6;        if(isprime(val1))            prime[i++] = val1;        val5 += 6;        if(isprime(val5))            prime[i++] = val5;    }}int main(){    int n;    maketable(MAXN);    while(cin >> n)        cout << prime[n - 1] << endl;    return 0;}



1 0
原创粉丝点击