1. 解题思路
这一题是leetcode双周赛171的第一题,是一个medium的题目。
这一题本质上就是对 1 0 9 10^9 109以下的任意一个质数的判断,因此我们只需要找出所有不大于 1 0 9 \sqrt{10^9} 109的所有质数,然后考察目标数是否能被其中某一个数整除即可。
2. 代码实现
给出python代码实现如下:
def get_primes(n):
primes = set()
status = [0 for _ in range(n+1)]
for i in range(2, n+1):
if status[i] == 1:
continue
primes.add(i)
for j in range(i, n+1, i):
status[j] = 1
return primes
PRIMES = get_primes(10**5)
def is_prime(num):
if num == 1:
return False
if num in PRIMES:
return True
return all(num % x != 0 for x in PRIMES)
class Solution:
def completePrime(self, num: int) -> bool:
s = str(num)
n = len(s)
for i in range(n):
l = int(s[:i+1])
if not is_prime(l):
return False
r = int(s[-i-1:])
if not is_prime(r):
return False
return True
提交代码评测得到:耗时4ms,占用内存18.14MB。
1877

被折叠的 条评论
为什么被折叠?



