Вот именно два четное, но никто не говорит что нельзя пропускать дальше. Начинать например сразу с нечетных чисел, в частности с 3, с шагом два. Вот примерная реализация:
C++ |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
| # include <iostream>
using namespace std;
bool a[100000000];
int main()
{
a[0]=a[1]=a[2]=true;
for (long i=3; i<100000000; i+=2) a[i+1]=!a[i]=true;
for(long i=3; i<100000000; i+=2)
{
if(a[i]==true)
{
for (long j=i*2; j<100000000;j+=i*2) a[i]=false;
}
}
for(long i=2; i<100000000; ++i)
{
if(a[i]==false)
cout <<i<<" ";
}
system("pause");
} |
|
Вроде посимпатичнее будет и минус один цикл. И кстати единица не является простым числом, простые числа идут с двойки. И еще на с++ нумерация массива идет с нуля по этому в окончании цикла должно быть строгое неравенство.