Welcome to Subscribe On Youtube
Formatted question description: https://leetcode.ca/all/1952.html
1952. Three Divisors
Level
Easy
Description
Given an integer n
, return true
if n
has exactly three positive divisors. Otherwise, return false
.
An integer m
is a divisor of n
if there exists an integer k
such that n = k * m
.
Example 1:
Input: n = 2
Output: false
Explantion: 2 has only two divisors: 1 and 2.
Example 2:
Input: n = 4
Output: true
Explantion: 4 has three divisors: 1, 2, and 4.
Constraints:
1 <= n <= 10^4
Solution
If n
has three divisors, then n
must be a perfect square number. Calculate the square root of n
, and loop over all integers from 1 to the square root minus 1. For each i
such that n
is divisible by i
, add 2 to the number of divisors. The final divisor is the square root of n
. Return true
if the number of divisors equals 3.
-
class Solution { public boolean isThree(int n) { int sqrt = (int) Math.sqrt(n); if (sqrt * sqrt != n) return false; int divisors = 1; for (int i = 1; i < sqrt; i++) { if (n % i == 0) divisors += 2; } return divisors == 3; } } ############ class Solution { public boolean isThree(int n) { int cnt = 0; for (int i = 1; i <= n / i; ++i) { if (n % i == 0) { cnt += n / i == i ? 1 : 2; } } return cnt == 3; } }
-
// OJ: https://leetcode.com/problems/three-divisors/ // Time: O(N) // Space: O(1) class Solution { public: bool isThree(int n) { int ans = 0; for (int i = 1; i <= n && ans <= 3; ++i) { if (n % i == 0) ++ans; } return ans == 3; } };
-
class Solution: def isThree(self, n: int) -> bool: return sum(n % i == 0 for i in range(2, n)) == 1 ############ # 1952. Three Divisors # https://leetcode.com/problems/three-divisors/ class Solution: def isThree(self, n: int) -> bool: res = 0 for k in range(1, n + 1): if n % k == 0: res += 1 if res > 3: return False return res == 3
-
func isThree(n int) bool { cnt := 0 for i := 1; i <= n/i; i++ { if n%i == 0 { if n/i == i { cnt++ } else { cnt += 2 } } } return cnt == 3 }
-
/** * @param {number} n * @return {boolean} */ var isThree = function (n) { let cnt = 0; for (let i = 1; i <= n / i; ++i) { if (n % i == 0) { cnt += ~~(n / i) == i ? 1 : 2; } } return cnt == 3; };