三除数

给你一个整数 n 。如果 n 恰好有三个正除数 ,返回 true ;否则,返回 false 。

如果存在整数 k ,满足 n = k * m ,那么整数 m 就是 n 的一个 除数 。

示例 1:

输入:n = 2
输出:false
解释:2 只有两个除数:1 和 2 。
示例 2:

输入:n = 4
输出:true
解释:4 有三个除数:1、2 和 4 。

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/three-divisors
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

无脑方法

class Solution {
    public boolean isThree(int n) {
        boolean flag = false;
        int count = 0;
        //找到除了1和本身之外的数
        for(int i = 2;i< n;i++){
            if(n%i==0)count++;
            //如果多的除数,那么就不是三除数
            if(count>1)return flag;
        }
        return count==1;
    }
}

缩减遍历数组

class Solution {
    public boolean isThree(int n) {
        //除了1和本身之外,找到正除数,不能多于3
        //这里有个隐藏提示:如果想把一个数除味0,那么这个数就要是它的一半或者以下
        int count = 2;
        for(int i=n/2;i>1;i--){
            if(n%i==0){
                count++;
            }
        }
        if(count==3)return true;
        return false;
    }
}
posted @ 2023-05-17 18:23  网抑云黑胶SVIP用户  阅读(20)  评论(0)    收藏  举报