下面代码仅供本人复习所用,实用性N低,各位飘过吧~~哈哈:>
// // 求素数. // #include <cstdlib> #include <cmath> #include <iostream> #include <vector> #include <iomanip> typedef std::vector<unsigned long> Primer; // // 将 range 范围内的素数保存到向量 primer 中. // 当一个数除以 2 直到到它的平方根时都没有整除,则该数为素数. // void getPrimer(Primer &primer, const unsigned long range) { bool isPrimer = false; double square_root; for (unsigned long i = 2, j; i <= range; ++i) { isPrimer = true; square_root = sqrt(i); for (j = 2; j <= square_root; ++j) { if (0 == i % j) { isPrimer = false; break; } } if (true == isPrimer) { primer.push_back(i); } } } // // 测试. // int main(void) { unsigned long range; Primer primer; std::cout << "Please input primer solving range: "; while (!(std::cin >> range)) { std::cout << "Input wrong, input again: "; } getPrimer(primer, range); Primer::iterator beg = primer.begin(); Primer::iterator end = primer.end(); while (beg != end) { std::cout << *beg++ << " "; } std::cout << std::endl; return EXIT_SUCCESS; }