Go: package main

import "fmt"

func main() {
	const MAX = 1000000
	prime := make([]int, MAX, MAX)
	check := make([]int, MAX, MAX)
	count := make([]int, MAX, MAX)

	prime[0] = 1
	prime[1] = 1

	// prime init
	for i := 2; i < MAX; i++ {
		if check[i] == 1 {
			continue
		}

		if prime[i] == 0 {
			for j := i * 2; j < MAX; j += i {
				check[j] = 1
				prime[j] = 1
			}
		}
	}

	for i := 2; i < MAX; i++ {
		cnt := 0

		if prime[i] == 0 {
			cnt = 1
		}

		count[i] = count[i-1] + cnt
	}

	for {
		var input int
		inputCount, _ := fmt.Scanf("%d", &input)
		if inputCount != 1 {
			break
		}

		fmt.Println(count[input])
	}
}

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

                                                                                                                                                               
int count_prime_number(int);

int main(void){

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

    return 0;
}

int count_prime_number(int n){

    int f,prime_num = 1;

    if (n == 2) {
        prime_num = 1;
    }
    else{
        for (int j = 3; j <= n; j += 2) {   
            f = 0;
            for(int i = 3; i <= std::sqrt(n); i+=2){
                if (j%i == 0) {
                    f = 1;
                    break;
                }
            }

            if (f == 0) {
                prime_num++;
            }
        }
    }

    return prime_num;

}

C++: #include <bits/stdc++.h>
#define debug(x) cerr << #x << ": " << x << '\n';
using namespace std;
using ll = long long;
using P = pair<int, int>;
const int INF = (int)1e9;

// エラストテネスの篩, o(n)程度
// n以下の素数の数を返す, prime[i]: i番目の素数, is_prime[i]: iが素数であるか
int sieve(int n, int prime[] = nullptr, bool is_prime[] = nullptr){
	bool flag0 = false, flag1 = false;
	if(prime == nullptr){
		flag0 = true; prime = new int[n];
	}
	if(is_prime == nullptr){
		flag1 = true; is_prime = new bool[n + 1];
	}

	int p = 0;
	fill(is_prime, is_prime + n + 1, true);
	is_prime[0] = is_prime[1] = 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;
		}
	}

	if(flag0) delete prime;
	if(flag1) delete is_prime;

	return p;
}

const int MAX_N = (int)1e6;
int prime[MAX_N];
bool is_prime[MAX_N + 1];

int main(void){
	int num = sieve(MAX_N, prime, is_prime);

	int n;
	while(scanf("%d", &n)){
		if(n == EOF) break;
		cout << upper_bound(prime, prime + num, n) - prime << '\n';
	}

	return 0;
}

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

int prime[1000000];


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


void get_prime(int max_num) {
  int primecount = 1;
  prime[2] = primecount;
  for (int i = 3; i <= max_num; i += 2) {
    if (isPrime(i))
      prime[i] = ++primecount;
    else
      prime[i] = primecount;
  }
}


int main () {
  int ns[31];
  int i = 0, max_num;
  while (std::cin >> ns[i]) {
    max_num = std::max(max_num, ns[i]);;
    if (ns[i] % 2 == 0)
      ns[i] --;
    i ++;
  }
  get_prime(max_num);
  for (int j = 0; j < i; j ++) {
    std::cout << prime[ns[j]] << std::endl;
  }
  return 0;
}

C++: #include "stdio.h"
//#include"time.h"
const int MAX_V = 1000000; // 100????????§????´???°??¨?????????
int prime[MAX_V+1]; // 1????´???°,0????´???°??§?????????
int main() {
    int i, k, n, u;
//    clock_t start, now;//??£?¨?
    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?????\???????????°????´???°??§?????????
            }
        }
    }
    int sum[1000000] = {0};
    while (1) {
        scanf("%d",&n);
        for(u = 0;u <= n;u++){
            if (n == EOF)break;
            sum[u+1] = sum[u] + prime[u];
//        start = clock(); // ????§???????
//        now = clock(); // ????????????
        }
        printf("%d\n",sum[n+1]);//for?????????????????????
//        printf("%f\n", (double)(now - start) / CLOCKS_PER_SEC);
    }
    return 0;
}
//????¨??????¨????????????????????????

C++: #include <iostream>
using namespace std;
const int len = 1000000;

int main()
{
    int arr[30] = {0},n,count=0;
     cin>>n;
    for (int i = 2; i < n; i++)
    {
        for (int j = i * i; j < n; j+=i)
        {
            arr[j - 1] = 1;
        }
    }
    for (int i = 1; i < n; i++)
    {

        if ((arr[i - 1] == 0)&&(i>1))
            count++;


    }
    std::cout <<count;
}

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

C++: #include<stdio.h>

int main(void){

	int sosuu[100000],kazu,n,i,j;

	while(scanf("%d",&n)!=EOF){
		kazu=n-1;
		for(i=2;i<=n;i++){
			sosuu[i]=1;
		}
		for(i=2;i<=n;i++){
			if(sosuu[i]==1){
				for(j=i*2;j<=n;j+=i){
					if(sosuu[j]==1){
						kazu--;
						sosuu[j]=0;
					}
				}
			}
		}
		printf("%d\n",kazu);
		
	}

	return 0;
}

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

bool prime[MAX]={};

void run(){
  for(int i=2;i<MAX;i++){
    prime[i]=true;
  } 

  for(int i=2;i<MAX;i++){
    if(!prime[i])continue;
    for(int j=2;j*i<MAX;j++){//i*1 is prime number
      prime[i*j]=false;
    }
  }
  return;
}

int main(){

  run();
  
  int n;
  while(cin>>n){
    int sum=0;
    for(int i=2; i<=n; i++){
      if(prime[i])sum++;
    }
    cout<<sum<<endl;
  }
  return 0;

}

C++: #include<stdio.h>

int main()
{
	int n,m;
	while(scanf("%d",&n) !=EOF)
	{
		m=0;
		for(int x=2;x<=n;x++)
		{
			for(int y=x-1;y;y--)
			{
				if(y==1)
				{
					m++;
				}
				else if(x%y==0)
				{
					break;
				}				
			}
		}
		printf("%d\n",m);
	}
}

C++: #include <bits/stdc++.h>

using namespace std;

int main()
{
	vector<int>D(1000000 , 1);
	D[0] = 0;
	D[1] = 0;
	for(size_t i = 2; i <= sqrtl(1000000); i++)
	{
		if(D[i])
		{
			int j = 2;
			while(i*j < 1000000)
			{
				D[i*j] = 0;
				j++;
			}
		}
		D[i] += D[i - 1];
	}
	int n;
	while(cin >> n)cout << D[n] << endl;
	return 0;
}

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

//using namespace std;

int sosuu(int n);

int main(){
    int n = 0;
    
    while(scanf("%d",&n)!=EOF){
        int temp = 0;
        if(n==1){
            printf("%d",0);
        }else{
            for(int i=2; i<=n; i++ ){
                temp+=sosuu(i);
                if(i!=2){
                    i++;
                }
            }
            printf("%d\n",temp);
        }
    }
    
    
}

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