Cod sursa(job #1350665)

Utilizator MarianMMorosac George Marian MarianM Data 20 februarie 2015 21:37:33
Problema Ciurul lui Eratosthenes Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.9 kb
#define _CRT_SECURE_NO_DEPRECATE

#include <iostream>
#include <cstdio>
#include <vector>
#include <cstring>
#include <string>
#include <algorithm>
#include <iterator>
#include <cmath>
using namespace std;

#define DMAX 2000003

long long b, F, r, cnt;
bool nr[DMAX + 1];

int main(){
	long long i, j;

	freopen("ciur.in", "r", stdin);
	freopen("ciur.out", "w", stdout);

	scanf("%I64d\n", &b);

	for (i = 2; i < DMAX; i++){
		if (!nr[i]){
			for (j = i * i; j < DMAX; j += i){
				nr[j] = 1;
			}
		}
	}

	for ( i = 2; i <= b; i++){
		if (!nr[i])
			cnt++;
	}

	cout << cnt;

	/*do{
		scanf("%I64d\n", &b);
		if (b){
			F = b; r = ceil(sqrt(b));
			for (i = 2; i <= r; i++){
				if (!nr[i] && !(b%i)) { 
					F /= i; F *= i - 1;
					b /= i;
				}
			}
			if (b > r) { F /= b; F *= b - 1; }
			printf("%I64d\n", b == 1 ? 0 : F);
		}
	} while (b);*/

	return 0;
}