输出 1 - N 之间的所有素数:
method 1:
void prime (int n) {
for (int i = 2; i < n; i++) {
bool b = true;
for (int j = 2; j < i/2 + 1; j++) {
if (i % j == 0) {
b = false;
break;
}
}
if (b) {
cout << i << " "
}
}
也可以 将第2个循环提出,做一个新函数
bool primeNumber( int n) {
for (int i = 2; i < n/2 + 1; i++) {
if (n % i == 0)
return false;
}
return true;
}
void prime (int n) {
for (int i = 2; i < n; i++) {
if (isPrime(i)) {
cout << i << " ";
}
}
method 1是一个比较简单的方法, 但循环次数比较多,方法2 循环次数要少于方法1,但
需要更多的内存。
void prime (int n) {
int *value = new int[n]];
// GetSystemTime is a windows api to get system time.
// GetSystemTime(&firstTime);
for (i = 1; i < n; i++) {
times ++;
value[i] = 1;
}
for (i = 2; i < n; i++) {
int j = 2;
int x = j * i;
while ((x = j*i) < n) {
times ++;
value[x] = 0;
j++;
}
}
cout << "prime in array:" << endl;
for ( i = 2; i < n; i++) {
times ++;
if (0 != value[i]) {
cout << i << " " ;
}
}
delete value;
}