要判断一个整数 n
是否恰好有三个正除数,可以从数学上来分析:
✅ 关键观察:
一个数 恰好有三个正除数,它的结构必须是:
n = p²,其中 p 是一个 质数
❓为什么?
-
一个质数 p 的正因数是:1 和 p(共两个)
-
如果 n = p²,那么它的正因数是:1、p、p²(共三个)
-
如果 n 不是某个质数的平方,要么因数更多,要么更少
✅ 算法步骤:
-
如果 n < 4,直接返回 false(因为 2² = 4 是最小满足的数)
-
计算 √n,看是否是整数(即 n 是否为某个数的平方)
-
如果是平方,检查它的平方根是否是质数
✅ 代码实现(Python):
import math
def isThree(n: int) -> bool:
root = int(math.sqrt(n))
if root * root != n:
return False
# 检查 root 是否是质数
for i in range(2, int(root ** 0.5) + 1):
if root % i == 0:
return False
return root > 1 # 1 不是质数
🧪 示例:
-
n = 4
→ 因数:[1, 2, 4] → ✅ 返回True
-
n = 6
→ 因数:[1, 2, 3, 6] → ❌ 返回False
-
n = 9
→ 因数:[1, 3, 9] → ✅ 返回True