Go: package main

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

var sc = bufio.NewScanner(os.Stdin)

func main() {
	for sc.Scan() {
		input := nextInt()
		fmt.Println(IsPrime(input))
	}
}

func IsPrime(num int) int {
	eratos := make([]bool, num+1)
	c := 0
	for i := 2; i < len(eratos); i++ {
		if eratos[i] == false {
			c++
			eratosCalc(i, eratos)
		}
	}
	return c
}

func eratosCalc(primeNum int, eratos []bool) {
	for i := primeNum * primeNum; i < len(eratos); i += primeNum {
		eratos[i] = true
	}
}

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

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

Python: import math
b=[]
b.append(1)
b.append(2)
count=1
s=0
while s<30:
    try:
        x=int(input())
        if x>b[count]:
            for i in range(b[count]+1,x+1):
                count1=0
                
                for j in range(2,int(math.sqrt(i))+1):
                    if i%j==0:
                        count1=1
                        break
                if count1==0:
                    count+=1
                    b.append(i)
            print(count)
            print(b)
        else:
            for i in range(count+1):
                if b[i]>x:
                    print(i-1)
                    break
                elif b[i]==x:
                    print(i)
                    break
        s+=1
    except EOFError:
        break

Python: import sys
a=[0,0]+[1]*10**6
for i in range(999):
 if a[i]:a[i*2::i]=[0 for j in[0]*len(a[i*2::i])]
for e in sys.stdin:print(sum(a[:int(e)+1]))

Python: MAX=1000000
B=[]
def P(MAX,B):

    A=[i for i in range(2,MAX+1)]
    lim=MAX**(1/2)
    while True:
        p=A[0]
        if p>lim:
            B+=A
            return B
        else:
            B.append(p)
            A=[i for i in A if i%p!=0]
            
P(MAX,B)
while True:
    try:
        n=int(input())
        if n==1:
            print(0)
        elif n>=max(B):
            print(len(B))
        else:
            for i in range(n+1):
                if B[i]==n:
                    print(i+1)
                    break
                if B[i]>n:
                    print(i)
                    break

    except:
        break

Python: import bisect
primes = [0, 0] + [1]*999999
for i in range(2, 1001):
    if primes[i]:
        for j in range(i*i, 1000001, i):
            primes[j] = 0

primes = [i for i, v in enumerate(primes) if v]
while True:
    try:
        n = int(input())
    except:
        break
    print(bisect.bisect(primes, n))

Python: # coding: utf-8
# Your code here!

MAX = 1000000
#エラトステネスの篩を用いて素数リストを予め作成する
s = [1] * MAX
## まずは全ての数が素数か不明ということにしておく
## s[2]以降をfor文で1に変換するより、s[0]s[1]を0とする方が繰り返しを使わずに済む
s[0] = 0
s[1] = 0

start = 2
while True:
    ## はじめにpmbを0で初期化しておかないと、pmb==0という条件に入ることはない
    pmb = 0
    for i in range(start, MAX):
        if s[i] == 1: #素数か否か不明な数の中で最小値を探す
            pmb = i
            break #見つかったらループを抜ける
    #print("リストsの中身", s)
   
    if pmb == 0:
        break #素数が見つからなかった
   
    #篩にかける
    for i in range(pmb ** 2, MAX, pmb):
        s[i] = 0  #素数でない要素を０にする

    start += 1

    #素数一覧をを表示
   #  for i in range(2, MAX):
   #     if s[i] == 1:
   #        print(i)

while True:
    try:
        n = int(input())
        
        c = 0
        for i in range(2, n + 1):
            if s[i] == 1:
                c += 1
        print(c)

    except EOFError:
        break
    ## tryできたときに行いたい処理はtryのインデント内に書く
      #  c = 0
      #  for i in range(2, n + 1):
      #       if s[i] == 1:
      #           c += 1
      #  print(c)

Python: def kqpurge(num):
    k=0
    while num%2==0:
        num=num/2
        k+=1
    return k,int(num)

def miller_l(num):
    k,q=kqpurge(num-1)
    tnum=0
    if num==1:return False
    if num in [2,3,5,7]:return True
    for i in [2,3,5,7]:
        for e in range(k+1):
            if e==0:
                if i**q%num==1:
                    tnum+=1
                    break
                elif i**q%num==num-1:
                    tnum+=1
                    break
            else:
                temp=i**((2**e)*q)
                if temp%num==(num-1):
                    tnum=tnum+1
                    break
                elif temp%num==1:
                    break
    if tnum==4:
        return True
    else:
        return False
        
while True:
    try:n=int(input())
    except:break
    count=0
    for i in range(2,n+1):
        if miller_l(i):
            count+=1
    print(count)

Python: def isprime(num):
   i = 2
   count = 0
   while i< num:
       if num % i == 0:
           count += 1
       i += 1
   if count == 0:
       return 1
   else:
       return 0
ch = 0
while ch != 26:
   num = int(input())
   count_prime = 0
   for i in range(2,num+1):
       if(isprime(i) == 1):
           count_prime += 1
   print(count_prime)

Python: import math
import sys

def get_primes(n):
    search = list(range(2, n+1))
    primes = []
    while True:
        primes.append(search[0])
        for i,x in enumerate(search):
            if x % primes[-1] == 0:
                del search[i]
        if search[0] >= math.sqrt(n):
            primes.extend(search)
            return primes

for line in sys.stdin.readlines():
    n = int(line)
    print(len(get_primes(n)))

Python: from math import sqrt
cash = {}
def isprime(n):
    if n in cash:
        return cash[n]
    if n == 1:
        cash[n] = 0
        return 0
    if n == 2:
        cash[n] = 1
        return 1
    if n % 2 == 0:
        cash[n] = 0
        return 0
    for i in range(3,int(sqrt(n)+1))[0::2]:
        if n % i == 0:
            cash[n] = 0
            return 0
    cash[n] = 1
    return 1

from sys import stdin
#cash2 = {}
for i in stdin:
    i = int(i)
    c = sum(isprime(n) for n in range(2,i+1)[1::2]) + 1
    print(c)

Python: #!/usr/bin/env python
# -*- coding:utf-8 -*-
#from __future__ import print_function
import time
import sys
import io
import re
import math
start = time.clock()

def prime(n):
    l=[True for _ in range(n+1)]
    i=2
    while i**2<=n:
        if l[i]:
            j=i+i
            while j<=n:
                l[j]=False
                j+=i
        i+=1
    return l
#    lis=[i for i in range(n+1) if l[i] and i>=2]

for n in sys.stdin:
    print (prime(int(n))).count(True)-2

Python: from math import sqrt
def f(x):
    lst  = [i for i in range(x + 1)]
    flag = [1 for i in range(x + 1)]
    flag[0] = flag[1] = 0
    for i in lst:
        if flag[i] == 0:
            continue
        else:
            for j in range(i*2, x + 1, i):
                flag[j] = 0
    return flag.count(1)

a = []
while True:
    try:
        a.append(int(input()))
    except EOFError:
        break

for x in a:
    print(f(x))

Python: numlist=[0,1]+[0]*999998
for i in range(3,1000000,2):
    numlist[i]=1
for i in range(3,1000,2):
    if numlist[i]==1:
        for j in range(i*i,1000000,i):
            numlist[j]=0

cnt=[0]*1000001
count=0
for i in range(1,1000000,2):
    if numlist[i]:
        count+=1
    cnt[i]=cnt[i+1]=count

while True:
    try:
        n=int(input())
        print(cnt[n])
    except:
        break

Python: max_num = 1000000
cnt = 0
p = [1] * max_num
p[0] = p[1] = 0
for i in xrange(2, int(max_num ** 0.5) + 1):
    if p[i]:
        p[i * i::i] = [0] * len(p[i * i::i])
        cnt += 1
    p[i] = cnt

while True:
    try: print(p[input()])
    except: break

Python: import sys
from array import array

N = 1000000
primes = array('I',[1]) * (N//2)
primes[0] = 0

for i in range(3,int(N**0.5),2):
    if primes[i//2]:
        primes[(i*i)//2::i] = array('I',[0]) * len(primes[(i*i)//2::i])

for i in sys.stdin:
    n = int(i)
    if n < 4:
        print(n-1)
    else:
        print(sum(primes[:(n+1)//2])+1)