[Project Euler] Problem 7
2011-02-22 01:21
281 查看
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 10001st prime number?
求第10001个素数。
求素数有很多种方法
最直接的方法就是看这个数能不能整除2~sqrt(该数);
而查表法能做更少的运算,如果一个数不能被小于它的素数整除的话,那么该数就是素数。
如23不能被2,3,5,7,11,13,17,19整除。
更进一步,一个数不能被2~sqrt(该数)中的素数整除的话,那么该数就是素数。
所以,23只要不能被2,3,5整除的话就可以说它是素数了。
What is the 10001st prime number?
求第10001个素数。
求素数有很多种方法
最直接的方法就是看这个数能不能整除2~sqrt(该数);
而查表法能做更少的运算,如果一个数不能被小于它的素数整除的话,那么该数就是素数。
如23不能被2,3,5,7,11,13,17,19整除。
更进一步,一个数不能被2~sqrt(该数)中的素数整除的话,那么该数就是素数。
所以,23只要不能被2,3,5整除的话就可以说它是素数了。
#include <iostream> using namespace std; const int END = 10001; bool isPrime(int init,int table[],int num){ for(int i=0; i<num; i++){ if(table[i]*table[i] > init) break; if(init%table[i] == 0) return false; } return true; } int main(){ int num = 1; int primeTable[END] = {2}; int init = 3; while (num < END){ if(isPrime(init,primeTable,num)){ primeTable[num] = init; num++; }; init += 2; } cout << primeTable[END-1] << endl; return 0; }
相关文章推荐
- 【Project Euler】【Problem 2】Even Fibonacci numbers
- [Project Euler]加入欧拉 Problem 12
- [Project Euler] Problem 2
- [Project Euler] Problem 19
- Project Euler:Problem 40 Champernowne's constant
- [Project Euler] Problem 29
- [Project Euler]Problem 1:Multiples of 3 and 5
- [Project Euler] Problem 18 & Problem 67 Python解答
- Project Euler:Problem 56 Powerful digit sum
- Project Euler:Problem 80 Square root digital expansion
- Project Euler__problem 6
- Project Euler - Problem 9
- [Project Euler] Problem 56
- [Project Euler]Problem 44
- 【Project Euler】【Problem 3】Largest prime factor
- [Project Euler]加入欧拉 Problem 17
- [Project Euler] Problem 20
- Project Euler: Problem 9 Special Pythagorean triplet
- [Project Euler]Problem 10
- [Project Euler] Problem 30