Go: package main

import (
	"bufio"
	"fmt"
	"math"
	"os"
	"strconv"
)

var sc = bufio.NewScanner(os.Stdin)

func main() {
	var primeCount int
	for sc.Scan() {
		input := nextInt()
		for i := 0; i <= input; i++ {
			if IsPrime(i) {
				primeCount++
			}
		}
		fmt.Printf("%d\n", primeCount)
		primeCount = 0
	}
}

func IsPrime(num int) bool {
	switch {
	case num == 2 || num == 5:
		return true
	case num < 2 || num%2 == 0 || num%5 == 0:
		return false
	}
	sqrt := math.Sqrt(float64(num))
	for i := 3; i <= int(sqrt); i += 2 {
		if num%i == 0 {
			return false
		}
	}
	return true
}

func next() string {
	return sc.Text()
}

func nextInt() int {
	a, _ := strconv.Atoi(next())
	return a
}

C++: #include<bits/stdc++.h>
using namespace std;

#define MAX_N 1000000

int prime[MAX_N];         // i??????????´???°
bool is_prime[MAX_N + 1]; // is_prime[i]???true????????°i????´???°

// n??\???????´???°?????°?????????
int sieve(int n) {
  int p = 0;
  for (int i = 0; i <= n; i++)
    is_prime[i] = true;
  is_prime[0] = false;
  for (int i = 2; i <= n; i++) {
    if (is_prime[i]) {
      prime[p++] = i;
      for (int j = 2 * i; j <= n; j += i)
        is_prime[j] = false;
    }
  }
  return p;
}

int main(){
    int n;
    while(scanf("%d",&n) != EOF){
        cout << sieve(n) << endl;
    }

    return 0;
}

C++: #include<algorithm>
#include<functional>
#include<cmath>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<string>
#include<sstream>
#include<iostream>
#include<iomanip>
#include<vector>
#include<list>
#include<stack>
#include<queue>
#include<map>
#include<set>
#include<bitset>

#define all(c) (c).begin(), (c).end()
#define rep(i,n) for(int i=0;i<(n);i++)
#define pb(e) push_back(e)
#define mp(a, b) make_pair(a, b)
#define fr first
#define sc second

typedef unsigned long long ull;
typedef long long ll;

const int INF=100000000;
int dx[4]={1,0,-1,0};
int dy[4]={0,1,0,-1};

using namespace std;

typedef pair<int ,int > P;

int MAX_N=1000007;
bool prime[1000007];

int main()
{
	fill(prime,prime+MAX_N,true);

	prime[0]=prime[1]=false;
	for(int i=2;i<MAX_N;i++)
	{
		if(prime[i])
		{
			for(int j=i*2;j<MAX_N;j+=i) prime[j]=false;
		}
	}

	int n;
	while(cin>>n)
	{
		int ans=0;
		rep(i,n+1)
			if(prime[i])
				ans++;
		cout<<ans<<endl;
	}
	


	return 0;
}

C++: #include <stdio.h>
#include <iostream>

using namespace std;

#define MAX_NUM	1000000

int solist[MAX_NUM] = { 0 };

int main(int argc, char* argv[])
{
	int i; 
	int num;
	int count;
	int val;

	solist[0] = 1;
	solist[1] = 1;

	for (num = 3; num < MAX_NUM; num += 2) {
		if (solist[num]) continue;
		for (i = num * 2; i < MAX_NUM; i += num) {
			solist[i] = 1;
		}
	}

	while (cin >> val) {
		count = 0;
		for (i = 1; i < val; i += 2) {
			if (solist[i] == 0) count++;
		}
		cout << count << endl;
	}
	
	return 0;
}

C++: #include<cstdio>
#include<algorithm>
#include<iostream>
#include<cstring>
#include<string>
#include<algorithm>
using namespace std;
int const M=31;
int a,hantei[M];

int main(){
  hantei[0]=hantei[1]=1;
  for(int i=2;i<M;i++){
    if(hantei[i]==0){
      for(int j=2;j*i<M;j++){
	if(j*i<M){
	  hantei[j*i]=1;
	}
      }
    }
  }
  for(;cin>>a;){
    int count=0;
    for(int i=0;i<=a;i++){
      if(hantei[i]==0){
	count++;
      }
    }
    cout<<count<<endl;
  }
}

C++: #include<stdio.h>
int main(void){
	int i,j,n;
	bool judge[1000000]={0};
	
	for(i=3; i<1000000; i++)if(i % 2 == 0)judge[i] = 1;
	
	for(i=3; i<500000; i+=2){
		if(judge[i]==0){
			for(j=i*2;j<1000000;j+=i){
				if(j % i == 0){
					judge[j]=1;
				}
			}
		}
	}
	
	while(scanf("%d",&n) != EOF){
		int count=0;
		for(i=3;i<=n;i+=2){
			if(judge[i]==0)count++;
		}
		printf("%d\n",count+1);
	}
	return 0;
}

C++: #include<iostream>
using namespace std;

const int listmax=1000000;

int main(){
	bool nprime[listmax]={};
	for(int i=2;i<listmax;i++){
		if(nprime[i])continue;
		for(int j=i+i;j<listmax;j+=i){
			nprime[j]=true;
		}
	}
	int n;
	while(cin>>n){
		int sum=0;
		for(int i=2;i<=n;i++){
			if(!nprime[i])sum++;
		}
		cout<<sum<<endl;
	}
	return 0;
}

C++: #include<iostream>
#include <vector>
#include <algorithm>
#include <string>
#include <math.h>
using namespace std;
#include <sstream>
typedef long double ld;
int a;
int isprime(int aa) {
	if (aa == 1)
		return 0;
	for (int i = 2; i * i <= aa; ++i) {
		if (aa % i == 0) {
			return 0;
		}
	}
	return 1;
}

int main() {
	while (cin >> a) {
		int cnt = 0;
		for (int i = 1; i <= a; ++i) {
			if (isprime(i)) {
				cnt++;
			}
		}
		cout << cnt << endl;
	}
}

C++: #include <iostream>
#include <algorithm>
#include<string>
#include<vector>
int main() {
	int n;
	while (std::cin >> n)
	{
		std::vector<bool> v(n + 1 ,false);
		int c = 0;
		v[0] = true, v[1] = true;
		for (int i = 2; i * i <= n ; ++i) {
			if (!v[i]) {
				for (int j = i * i; j <= n; j += i) {
					if (!v[j])c++;
					v[j] = true;
				}
			}
		}

		std::cout << n-c-1 << std::endl;
	}
}

C++: #include<iostream>
#include<cmath>
using namespace std;
bool isPrime(int x)
{
	if (x < 2)
		return false;
	if (x == 2)
		return true;
	if (x % 2 == 0)
		return true;
	for (int i = 3; i <= (int)sqrt(x); i+=2)
		if (x%i == 0)
			return false;
	return true;
}
int main()
{
	int n;
	cin >> n;
	int count = 0;
	for (int i = 1; i <= n; i++)
		if (isPrime(i))
			count++;
	cout << count << endl;
}

C++: #include<iostream>
#include<math.h>
using namespace std;

bool is_sosu(int x){
	int i;
	if(x<2) return false;
	for(i=2;i<=sqrt((double)x);i++){
		if(x%i==0) return false;
	}
	return true;
}

int main()
{
	long int n,x;
	int ans;
	while(cin>>n){
		if(n>=2) ans=1;
		else if(n<2) ans=0;
		
		for(x=3;x<=n;x+=2){
			if(is_sosu(x)==true) ans++;
		}
		cout<<ans<<endl;
	}
}

C++: #include <iostream>
using namespace std;
#define max_n 1000000

int main(void) {

  int x;
  while(cin >> x){


    bool array[max_n];

    for(int i = 0; i < max_n; i++) {
      array[i] = true;
    }

    array[0] = false;
    array[1] = false;
    for(int i = 2; i < max_n; i++) {
      for(int j = 2; j < max_n; j++) {
        if(i * j > max_n) break;
        array[i * j] = false;
      }
    }

    int count_sosu = 0;

    for(int i = 0; i <= x; i++) {
      if(array[i] == true) count_sosu++;
    }

    cout << count_sosu << endl;
  }
  return 0;
}

C++: #include<stdio.h>

int main(void)
{
	int data=0,i=0,j=2,k=0,l=0,kai[100]={0},s[10000]={0};

	while(scanf("%d",&data) != EOF)
	{
		if(data<=1)
		{
			kai[k]=0;
		}
		else
		{
			for(i=2;i<data;i++)
				s[i]=i;
		
			for(i=2;i*2<data;i++)		
			{
				for(j=2;j*i<data;j++)				
					s[j*i]=0;
			}
			for(i=2;i<data;i++)
			{	
				if(s[i]!=0)
				{
					l+=1;
				}
			}
		}
		kai[k]=l;
		k+=1;
	}

  for(j=0;j<k;j++)
    printf("%d\n",kai[j]);
  return 0;
}

C++: #include <iostream>
using namespace std;

int main() {
	int n, count;
	bool *data;

	while (cin >> n) {
		data = new bool[n+1];
		count = 0;
		data[0] = data[1] = false;
		for (int i = 2;i <= n;i++) {
			if (data[i]) {
				count++;
				for (int j = i + i;j <= n;j += j) {
					data[j] = false;
				}
			}
		}
		cout << count << endl;
		delete[] data;
	}
	return 0;
}

C++: #include <iostream>
#include <cmath>
using namespace std;
int main(void){
    int n;
    while(cin>>n){
        int ans=0;
        for(int i=2;i<=n;i++){
            int sum=0;
            for(int j=1;j<=pow(i,0.5);j++){
                if(i%j==0)sum++;
                if(sum==2)break;
            }
            if(sum==1)ans++;
        }
        cout<<ans<<endl;
    }
    return 0;
}

C++: #include <stdio.h>

long MAX=999999;

int main(void){
    long int s[1000000]={0},k=0,i,j,n;
    
    s[0]=s[1]=1;
    
    for(i=2;i<=MAX;i++){
        if( !s[i] ){
            k++;
            for(j=2;j*i<=MAX;j++){
                s[j*i]=-1;
            }
        }
        s[i]=k;
    }
    
    
    while(EOF != scanf("%ld",&n)){
        printf("%ld\n",s[n]);
    }
    
    
    return 0;
}