python运算超时,已尽力优化,求助qwq

P1217 [USACO1.5] 回文质数 Prime Palindromes

xingkongyuan @ 2023-12-05 17:26:06

#使用的是python语言
lis = input().split()
lis = [int(x) for x in lis]
a = lis[0]
b = lis[1]
for i in range(a,b):
    if str(i)[-1] == '2' or str(i)[-1] == '4' or str(i)[-1] == '6' or str(i)[-1] == '8' or str(i)[-1] == '0':#筛除所有尾数偶数的数字
        continue
    if len(str(i)) % 2 == 0 and i != 11:#筛出所有数字的位数是偶数的回文数(因为除了11以外的回文数都不是质数,因为可以整除11)
        continue
    for k in range(2,i):#判断是否为质数
        if i % k == 0 :
            break
    else:
        for j in range(1,len(str(i))):#判断是否为回文数
            if str(i)[j - 1] != str(i)[-j]:
                break
        else:
            print(i)

by Terrible @ 2023-12-05 17:38:53

@xingkongyuan

你这个算法用什么语言写都超时吧。

合理的做法是:先枚举所有回文数,在枚举的回文数里挑质数。


by xingkongyuan @ 2023-12-05 17:41:43

@Terrible 谢谢,这就去调试,挨打就立正!


by GPUawa @ 2023-12-05 17:48:28

@xingkongyuan 是这样的,但是你会发现只有66分


|