PAT乙级1007.素数对猜想,Python运行超时

图片说明
以下是我的代码:

l = int(input())
first = 2
cnt = 0
i = 3
while i < l+1:
    j = 2
    while j <= i**0.5:
        if i % j == 0:
            break
        if j == 2:
            j += 1
        else:
            j += 2
    else:
        if i - first == 2:
            cnt += 1
        first = i
    i += 2
print(cnt)

图片说明
希望大佬能指出我的问题,最好可以修改我的源代码

python这语言的缺点之一:运行速度慢
//我试的,用math.sqet()依然超时
换成c/c++就可以了
有用,之前有误

http://blog.csdn.net/stephen_wong/article/details/26139309

存在大量重复计算。你先把题意范围内的素数全算出来,在比较相邻的多好

#include
int main(void)
{

int max;
scanf("%d",&max);
int a[max];
a[0]=2;
int output=0;
int index=1;
int i,j;
for (i = 2; i <= max; i++) {
if ((i>2)&&(i%2==0)) {
continue;
}
for ( j = i-1; j >0; j--) {
if (j==1) {
a[index]=i;
index++;
}
if (i%j==0) {
break;
}
}
}
for (i = 0; i < index-1; i++) {
if ((a[i+1]-a[i])==2) {
output++;
}
}
printf("%d",output);
return 0;
}
我也是最后一个测试点超时,这是我的C代码

超时的原因是因为找素数的方法不够好,把while j <= i**0.5:,改成开根号就行了。

追加,我的是用C语言写的,本来也是超时。改成kaige开根号就可以了,但是最后一个点运行时间还是比较长。