Pagini recente » Cod sursa (job #3252814) | Rating Mocanu Remus Andrei (mocanu95) | Cod sursa (job #3273268) | Cod sursa (job #2927512) | Cod sursa (job #1701447)
#include <fstream>
#include <iostream>
#include <vector>
using namespace std;
int pow(long a, int n, int mod){
int ans = 1;
for (; n; n >>= 1, a = a * a % mod)
if ( n & 1 ) ans = ans * a % mod;
return ans;
}
bool pass(long x, int nr, int mod){
x = pow(x, mod >> nr, mod);
if ( x == 1 ) return true;
while (nr--){
if ( x == mod - 1 )
return true;
x = x * x % mod;
}
return false;
}
bool prime(int n){
int s = __builtin_ctz(n - 1);
return s && pass(31, s, n) && pass(73, s, n);
}
int main(){
ifstream in("ciur.in");
ofstream out("ciur.out");
int n, ans = 1;
in >> n;
for (int i = 3; i <= n; i += 2)
ans += prime(i);
out << ans << '\n';
return 0;
}