14,639,661 members
Rate this:
See more:
```def asallar(limit):
limitn = limit+1
asal_degil = [False] * limitn
asal_listesi = []

for i in range(2, limitn):
if asal_degil[i]:
continue
for f in xrange(i*2, limitn, i):
asal_degil[f] = True
asal_listesi.append(i)

return asal_listesi```

```a = asallar(1000000)
print a[9999]```

`timeit asallar(1000000)`
Posted
Updated 13-Aug-20 1:26am
v2
Page 1 of 2

Rate this:

## Solution 11

```#include <iostream>
using namespace std;

vector <int>  asallar(size_t limit)
{
vector <bool> nov(limit+1, false);
vector <int> result;
for (size_t i=2; i<=limit; ++i)
{
if ( nov[i] ) continue;
for (size_t f = i*2; f<=limit; f+=i)
{
nov[f] = true;
}
result.push_back(i);
}
return result;
}

int main()
{
auto v = asallar(1000000);
}```

Timing:
```Python program: about 300 ms

Please note: if a `vector<int>` (instead of a `vector<bool>`) is used in the `C++` program, then the execution speed is doubled.

5ed.
CPallini 18-Mar-19 3:47am

Thanks.
Rate this:

## Solution 1

For C, something like in the comments:

```def asallar(limit): \\ void asallar(int limit, int* asal_listesi){
limitn = limit+1 \\ int limitn =limit+1;
asal_degil = [False] * limitn \\ int *asal_degil = malloc(...)
asal_listesi = [] \\ vector asal_listesi;

for i in range(2, limitn): \\ for(int i=2; i<limitn;>       if asal_degil[i]: \\ if(asal_degil[i])
continue       \\ continue;
for f in xrange(i*2, limitn, i): \\ etc
asal_degil[f] = True
asal_listesi.append(i)

return asal_listesi```
Page 1 of 2
1 2