最后更新于3年前
https://leetcode-cn.com/problems/three-divisors/
遍历1~n,硬算
16=2*8=8*2,即当一个数拆成a*b,若a!=b,同样会存在对称的b*a。遍历时不需要到n,只需要到n\sqrt nn即可,之后的可以用对称求出
16=2*8=8*2
a*b
a!=b
b*a
class Solution: def isThree(self, n: int) -> bool: i = 1 cnt = 0 while i * i <= n: #只需要遍历到根号n if n % i == 0: cnt += 1 if i * i != n: #两个因数不相等,则必然存在对称的 cnt += 1 i += 1 return cnt == 3