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;
    }
}

All Problems

All Solutions