Cod sursa(job #1741513)
Utilizator | Data | 14 august 2016 04:07:32 | |
---|---|---|---|
Problema | Ciurul lui Eratosthenes | Scor | 20 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.52 kb |
#include <fstream>
using namespace std;
ifstream in("ciur.in");
ofstream out("ciur.out");
int main()
{
int n,base,res,p;
in >> n;
int nr = 0;
if(2 <=n)
nr++;
for(int i = 3 ; i <= n ; i+=2)
{
base = 2;
res = 1;
p = i-1;
while(p)
{
if(p&1)
res = ((res%i)*(base%i))%i;
base *= base%i;
p >>=1;
}
if(res == 1)
nr++;
}
out<<nr;
return 0;
}