Cod sursa(job #2607207)
Utilizator | Data | 29 aprilie 2020 15:10:57 | |
---|---|---|---|
Problema | Ciurul lui Eratosthenes | Scor | 100 |
Compilator | cpp-64 | Status | done |
Runda | Arhiva educationala | Marime | 0.39 kb |
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("ciur.in");
ofstream out("ciur.out");
int const nmax=2000005;
long long int n,pr=0;
unsigned char a[nmax];
int main(){
in >>n;
for(int i=3;i<=n;i=i+2){
if(a[i>>4] & (1<<((i>>1) & 7))) continue;
pr++;
for(int j=i*3;j<=n;j+=i+i){
a[j >> 4] |= 1 << ((j>>1) & 7);
}
}
out << pr+1;
}