#include<stdio.h>
#include<math.h>
//#include<malloc.h>

void ver_vetor(int v[], int m)
{
	int i;
	for(i=0 ; i < m ; i++)
		printf("v[%d] = %d\n",i,v[i]);
}
// Verifica se o número é primo
int primo (int num)
{
	int i;
	int r2 = (int) sqrt((double) num);

	if(num%2 == 0 && num != 2)
		return 0;
	for(i=3 ; i <= r2 ; i+=2)
	{
		if(num%i == 0)
			return 0; // Número não é primo
	}
	return 1; // Número é primo
}
// Retorna a quantidade de números primos até n
int quant_primos (int n)
{
	int i,ok=0;
//	int *v = malloc((n+1) * sizeof(int));

	for(i=2 ; i <= n ; i++)
		if(primo(i))
		{
			ok++;
//			v[i] = ok;
		}

//	ver_vetor(v,n+1);
//	free(v);
	return ok;
}

int main (int argc, char * argv[])
{
	int n;
	// Recebe o valor via argumento ou via scanf
	if(!argv[1])
		printf("Digite um valor:"), scanf("%d",&n);
	else
		n = atoi(argv[1]);
	
	printf("Existem %d primos entre 2 e %d\n",quant_primos(n),n);
}

