PAT-B 1007. 素数対推定(C++,python)


pythonの最後のテストポイントがタイムアウトし、ひざまずいた.転載したあの高速線形ふるい法で素数を求めるのか...
ACのC++コード:
#include <cmath>
#include <iostream>

using namespace std;

inline bool is_prime(int num)
{
	for (int i = 2; i <= sqrt(num); ++ i)
	{
		if (num % i == 0)
		{
			return false;
		}
	}
	return true;
}

int main()
{
	int n, prev = 2, cnt = 0;

	cin >> n; 
	for (int i = 2; i <= n; ++ i)
	{
		if (is_prime(i) == true)
		{
			if (i - prev == 2)
			{
				++ cnt;
			}
			prev = i;
		}
	}
	cout << cnt;

	return 0;
}

python:
import math

def is_prime(num) :
    i = 2
    cnt = int(math.sqrt(num))
    while i <= cnt:
        if num % i == 0 :
            return False
        i = i + 1        
    return True
        
if __name__ == "__main__" :
    n = input()
    prev = i = 2
    cnt = 0
    while i <= n :
        if is_prime(i) :
            if  i - prev == 2 :
                cnt = cnt + 1
            prev = i
        i = i + 1
    print cnt