Cod sursa(job #2087468)
Utilizator | Data | 13 decembrie 2017 18:28:25 | |
---|---|---|---|
Problema | Ciurul lui Eratosthenes | Scor | 30 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.5 kb |
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("ciur.in");
ofstream g("ciur.out");
int v[2000001];
void ciur(int n) {
v[1]=v[2]=1;
for(int i=3; i<=n; i+=2) {
if(!v[i]) {
v[i]=v[i-2]+1;
for(int j=2*i; j<=n; j+=i)
v[j]=1;
} else
v[i]=v[i-2];
}
}
int main() {
int n;
f>>n;
ciur(n);
if(n<2)g<<'0';
if(n==2)g<<'1';
else if(n%2==0)g<<v[n-1];
else g<<v[n];
}