求素数
下面代码仅供本人复习所用,实用性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;
}

浙公网安备 33010602011771号