📅  最后修改于: 2023-12-03 14:57:48.510000             🧑  作者: Mango
本题考察程序员的算术能力和编程技巧。给定一个正整数 n
,请编写一个函数,判断 n
是否是质数。如果是质数返回 True
,否则返回 False
。
一个正整数 n
,n
<= 10^6。
如果 n
是质数,返回 True
,否则返回 False
。
输入:
5
输出:
True
判断一个数是否是质数,最直接的方法是试除法。这里列举两种常见的试除法实现。
从 2 到 sqrt(n) 枚举,若能整除,说明 n 不是质数,反之,则是质数。
时间复杂度为 O(sqrt(n))。
import math
def is_prime(n):
if n < 2:
return False
for i in range(2, int(math.sqrt(n))+1):
if n % i == 0:
return False
return True
先将 2 ~ n 的所有数标记为素数,然后从 2 开始遍历,若发现一个数为素数,则将它的倍数全部标记为合数,直到遍历到 n 为止。最后,所有未标记的数即为质数。
时间复杂度为 O(nloglogn)。
def is_prime(n):
if n < 2:
return False
primes = [True] * (n+1)
primes[0], primes[1] = False, False
for i in range(2, int(n**0.5)+1):
if primes[i]:
for j in range(i*i, n+1, i):
primes[j] = False
return primes[n]
本题考察了程序员的算术能力和编程技巧,通过掌握求质数的算法以及代码实现,可以提高程序员的代码能力和编程思维。