Cod sursa(job #630506)
Utilizator | Radu Bogdan Nicolae bogdanrn | Data | 5 noiembrie 2011 17:42:58 |
---|---|---|---|
Problema | Ciurul lui Eratosthenes | Scor | 30 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.88 kb |
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
ifstream f("ciur.in");
ofstream g("ciur.out");
unsigned int n=2;
unsigned int i=2;
unsigned int mult=2;
unsigned int j=2;
unsigned int nr=0;
f>>n;
bool x[n+1];
for (i=2;i<=n;i++){
x[i]=false;
}
i=2;
while (j<=n){
if (x[j]==false){
nr++;
x[j]=true;
mult=j;
if (j*j<=n){
i=j*j;
while (i<=n){
x[i]=true;
if (j*(mult+1)<=n)
{
i=j*(++mult);
} else {
i = n+1;
}
}
}
} else {
j++;
}
}
g<<nr;
return 0;
}