Cod sursa(job #1110263)

Utilizator RyuzakiL Lawliet Ryuzaki Data 17 februarie 2014 21:52:06
Problema Ciurul lui Eratosthenes Scor 30
Compilator cpp Status done
Runda Arhiva educationala Marime 0.72 kb
//eu sunt manu si urasc bebelusii!
/* nu imi place infoarena!!!!....aveti cel mai naspa site!*/

#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("ciur.in");
ofstream fout("ciur.out");


int pow(int a, int p)
{
    int c=p+1;
    int rez=1;
    while(p)
    {
        if(p&1)
        {
            rez=(rez*a*1LL)%c;
        }
        p>>=1;
        a=(1LL*a*a)%c;
    }
    return rez;
}

bool prim(int n)
{
    int i;
    for(i=max(n-20, 2);i<n;i++)
    {
        if(pow(i, n-1)!=1)
            return 0;
    }
    return 1;
}

int main()
{
    int n, i;
    fin>>n;
    int s=0;
    for(i=2;i<=n;i++)
    {
        if(prim(i))
            s++;
    }
    fout<<s;
}