Go: package main

// https://ja.wikipedia.org/wiki/%E3%82%A8%E3%83%A9%E3%83%88%E3%82%B9%E3%83%86%E3%83%8D%E3%82%B9%E3%81%AE%E7%AF%A9

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

var scanner = bufio.NewScanner(os.Stdin)

func nextString() string {
	scanner.Scan()
	return scanner.Text()
}

func nextInt() (int, error) {
	return strconv.Atoi(nextString())
}

func main() {
	scanner.Split(bufio.ScanWords)

	for {
		n, err := nextInt()
		if err != nil {
			break
		}
		maybePrime := make([]bool, n+1)
		for i := 0; i <= n; i++ {
			maybePrime[i] = true
		}

		maybePrime[0] = false
		maybePrime[1] = false
		for i := 2; i <= int(math.Sqrt(float64(n)))+1; i++ {
			j := i * 2
			for j <= n {
				maybePrime[j] = false
				j += i
			}
		}

		nPrimes := 0
		for _, p := range maybePrime {
			if p {
				nPrimes++
			}
		}
		// fmt.Println(maybePrime)
		fmt.Println(nPrimes)
	}
}

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

bool isPrime(int n){
	if(n <= 1){
		return false;
	}
	for(int i = 2; i*i <= n; i++){
		if(n%i == 0){
			return false;
		}
	}
	return true;
}

int main(){
	int Cheat[1000000],cnt = 0;
	Cheat[0]=0;Cheat[1]=0;
	for(int i = 0; i < 1000000; i++){
		if(isPrime(i)){
			cnt++;
		}
		Cheat[i] = cnt;
	}
	while(true){
		int n;
		cin >> n;
		if(cin.eof()){
			break;
		}
		cout << Cheat[n] << endl;
	}
	return 0;
}

C++: #include <iostream>
using namespace std;
int main(){
  int NUM = 1000000;
  bool prime[NUM];
  prime[0] = false;prime[1] = false;
  for(int i=2;i<NUM;i++)prime[i] = true;
  for(int i=2;i*i<NUM;i++)
    for(int k=2;i*k<NUM;k++)
      prime[i*k]=false;
  int n,c,i;
while(cin>>n){
for(c=0,i=0;i<=n;i++)if(prime[i])c++;
cout<<c<<endl;}}

C++: #include <iostream>
#define rep(i,n) for(int i=0;i<n;i++)
using namespace std;

const int N = 100000;

int main(void)
{
    bool a[N+1];
    int prime[N], n;
    rep(i,N+1)
    {
        a[i] = true;
    }
    a[0] = a[1] = false;
    for(int i=2;i*i<=N;i++)
    {
        if(a[i])
        {
            prime[i] = prime[i-1] + 1;
            for(int j=i*i;j<N;j+=i)
                a[j] = false;
        }
        else
            prime[i] = prime[i-1];
    }

    while(cin >> n)
        cout << prime[n] << endl;
    
    return 0;
}

C++: #include <stdio.h>
int main(){
	int i,j,n,num;
	bool prime[1000000];
	bool flag=true;
	for(i=0;i<999999;i++) prime[i]=true;
	while(scanf("%d",&n)!=EOF){
		num=0;
		for(i=2;i<n+1;i++){
				for(j=i*2;j<n+1;j=j+i) prime[j]=false;
		}
		for(i=2;i<n+1;i++){
			if(prime[i]==true) num++;
		}
		printf("%d\n",num);
	}
}

C++: #include <iostream>
#include <bitset>

using namespace std;

int main() {
  bitset<1000000> primes;
  int i, j, n;
  while (cin >> n) {
    primes.reset();
    for (i = 2; i <= n; i++)
      if (primes[i] == false)
	for (j = i + i; j <= n; j += i)
	  primes[j] = true;
    cout << n - primes.count() - 1 << " ";
  }
}

C++: #include <iostream>
#include <iomanip>
#include <functional>
#include <algorithm>
#include <vector>
#include <string>
#include <queue>
#include <stack>
#include <set>
#include <map>
#include <cstdio>
#include <cstdlib>
#include <cmath>
#include <cstring>
#include <climits>
#include <cctype>
using namespace std;
#define INF 0x3f3f3f3f
#define MP(X,Y) make_pair(X,Y)
#define PB(X) push_back(X)
#define REP(X,N) for(int X=0;X<N;X++)
#define REP2(X,L,R) for(int X=L;X<=R;X++)
#define DEP(X,R,L) for(int X=R;X>L;X--)
#define DEP2(X,R,L) for(int X=R;X>=L;X--)
#define CLR(A,X) memset(A,X,sizeof(A))
#define IT iterator
typedef long long ll;
typedef unsigned long long ull;
typedef pair<int,int> PII;
typedef vector<PII> VII;
typedef vector<int> VI;
#define X first
#define Y second
#define lson(X) ((X)<<1)
#define rson(X) ((X)<<1|1)
const int MAXN=1e7+5;


int phi[MAXN];
void eular(){
 	for(int i = 0; i<MAXN;i++) phi[i] = 1;
 	for(int i = 2; i<MAXN;i++)
 		if(phi[i] == 1)
 			for(int j = i+i;j<MAXN;j+=i)
 				phi[j] = 0;
 }
 
 
 int main(){
 	eular();
 	int n;
 	while(cin>>n)
 	{
 		int cnt=0;
 		REP2(i,2,n){
 			if(phi[i]) cnt++;
 		}	
 		cout<<cnt<<endl;
 		
	}
 	
 	
 	return 0;
 }

C++: #include<iostream>
using namespace std;
const int MAX_V = 1000000;
int prime[MAX_V+1];
int pcount[MAX_V];
int main() {
    int i, k,a,sum=0;
    for(i = 2; i <= MAX_V; i++) {
        prime[i] = 1; // 2??\????´???°??¨??????
    } 
    for(i = 2; i*i <= MAX_V; i++) {
        if(prime[i]) {
            for(k = 2 * i; k <= MAX_V; k += i) {
                prime[k] = 0; // ?´???°2?????\????????°?´???°??§?????? 
            }
            
        } 
        
    }
    pcount[0]=0;
    pcount[1]=0;
    for(i=2;i<MAX_V;i++){
        if(prime[i]){
            sum++;
        }
        pcount[i]=sum;
    }
    for(i=0;i<30;i++){
        scanf("%d",&a);
        printf("%d\n",pcount[a]);
    } 

    return 0; 
    
}

C++: #include<stdio.h>
#include<memory.h>
#include<math.h>
int a[999999]={0};
int main()
{
	int n,max=0;
	while(~scanf("%d",&n))
	{
		if(max>n) 
		{
			printf("%d\n",a[n]); 
			continue;
		}
		
		int sum=0;
		for(int i=max;i<=n;i++)
		{
			int flag=0;
			for(int j=2;j<=sqrt(i*1.0);j++)
				if(i%j==0) 
				{
					flag=1;
					break;
				}
			if((flag==0)&&i!=0&&i!=1) sum++;
			a[i]=a[max]+sum;
		}
		max=n;
		printf("%d\n",a[n]);
	}
	return 0;
}

C++: #include <cstdio>
#define N 999999
unsigned char p[((N+1)/2+7)/8];
int main() {
	int i,j,s,n=3;
	for(i=0;n<=(N/2);i++,n+=2)
		if(!(p[i/8]&(1<<(i%8))))
			for(j=i+n;j<((N+1)/2);j+=n)p[j/8]|=(1<<(j%8));
	while(scanf("%d",&n)!=EOF) {
		if(n<2){printf("0\n");continue;}
		if(n==2){printf("1\n");continue;}
		for(i=3,j=0,s=1;i<=n;i+=2,j++)
			s+=!(p[j/8]&(1<<(j%8)));
		printf("%d\n",s);
	}
}

C++: #include <iostream>
#include <cmath>
#define rep(i,N) for(int i = 0; i<(int)(N); i++)
#define REP(i,k,N) for(int i = k; i<(int)(N); i++)
using namespace std;
const int MAX_N = 10000010;
bool d[MAX_N];
int main(){
        int n;
        cin >> n;
        rep(i,MAX_N) d[i]=true;
        for(int i = 2; i< sqrt(n+1); i++) {
                if(d[i]) {
                        for(int j = 2; i*j<n+1; j++) {
                                d[i*j]=false;
                        }
                }
        }
        int ans = 0;
        REP(i,2,n+1){
                if(d[i]) ans++;
        }
        cout << ans << endl;


        return 0;
}

C++: #include <iostream>
#include <vector>
using namespace std;
int main() {
  vector<int> prime_list;
  bool flag;

  prime_list.push_back(2);
  for (int i = 3; i < 999999; i++) {
    for (int j = 0; j < prime_list.size(); j++) {
      if(i%prime_list[j] == 0) {
        flag = false;
        break;
      } else {
        flag = true;
      }
    }
    if (flag) {
      prime_list.push_back(i);
    }
  }

  int data, count;
  while(cin >> data) {
    for (int i = 0; i < prime_list.size() && prime_list[i] <= data; i++, count = i);
    cout << count << endl;
  }
}

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

int main(){
	int n;
	
	while(cin >> n){
		int a=0;
		for(int i = 1; i <= n; ++i){
			for(int j = 2; j <= i; ++j){

				if(i%j == 0){
				if(i==j){
					++a;
				}else{
					break;
				}
				}
		}
	
	}
		cout << a << '\n';
	}
}

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

int isPrime(int n);

int dp[1000000]={};

int main(){
  int n;
  for(int i=2;i<=1000000;i++){
      if(isPrime(i)) dp[i]=dp[i-1]+1;
      else dp[i]=dp[i-1];
  }
  
  while(cin >> n){
    cout << dp[n]<< endl;
  }
  
}

int isPrime(int n){
  for(int i=2;i*i<=n;i++){
    if(n%i==0) return 0;
  }
  return 1;
}