PAT-B 1007. 素数対推定(C++,python)
pythonの最後のテストポイントがタイムアウトし、ひざまずいた.転載したあの高速線形ふるい法で素数を求めるのか...
ACのC++コード:
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