题目描述:
给你一个整数 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 。
提示:
1 <= n <= 104
方法1:
主要思路:解题链接汇总
(1)对于任意非1的正整数,都会有1和自身两个正除数,所有对于满足要求的n,只能是一个可以开方的,且只能再有这一种情况,对于其他的方式再增加正除数,至少一次增加两个,那就成了四个正除数,不满足要求;
class Solution {
public:
bool isThree(int n) {
if(n<3){//排除特殊情形
return false;
}
int end=sqrt(n);//终止位置
int sign=false;//标识有另外的正除数
for(int i=2;i<=end;i++){
if(n%i==0){//存在正除数
sign=true;
if(i*i!=n){//此时至少再增加两个,直接返回
return false;
}
}
}
return sign;
}
};
func isThree(n int) bool {
if n< 3 {
return false
}
sign := false
for i:=2;i*i<=n;i++ {
if n%i==0 {
sign = true
if i*i!=n {
return false
}
}
}
return sign
}