输入一个数N(N <= 10^6)
输出>=N的最小的质数中的质数。
20
31
#include <cstdlib> #include <map> #include <cstring> #include <iostream> int main() { int *is_prime; is_prime= (int *) malloc(sizeof(int) *10010000); is_prime[0]= is_prime[1]= 1; for(int i=2; i<10010000; i++) { if(!is_prime[i]) for(int j=i+i; j<10010000; j+= i) { is_prime[j]= 1; } } std::map<int, int> m; int cnt=1; for(int i=1; i<= 10010000; i++) { if(!is_prime[i]) { m[i]= cnt++; } } int n; while(std::cin>> n) { int rec; for(int i=n; ; i++) { if(!is_prime[i] && !is_prime[m[i]]) { rec= i; break; } } std::cout<< rec<<‘\n‘; } free(is_prime); is_prime=NULL; return 0; }
原文:http://www.cnblogs.com/ceal/p/5506713.html