给你一个整数 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
链接:https://leetcode-cn.com/problems/three-divisors
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
package cn.fansunion.leecode.math;
/**
* 1952. 三除数<br/>
* 给你一个整数 n 。如果 n 恰好有三个正除数 ,返回 true ;否则,返回 false 。
如果存在整数 k ,满足 n = k * m ,那么整数 m 就是 n 的一个 除数 。
来源:力扣(LeetCode)
链接:力扣
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
* @author wen.lei@brgroup.com
*
* 2022-3-9
*/
public class ThreeDivisors {
/* 示例 1:
输入:n = 2
输出:false
解释:2 只有两个除数:1 和 2 。
示例 2:
输入:n = 4
输出:true
解释:4 有三个除数:1、2 和 4 。
提示:
1 <= n <= 104*/
/**
* 恰好有三个正除数:1个数肯定,有1和自己本身至少2个除数(1除外);有且只有3个,就是1到n,(1,n)之间有且仅有1个除数
* @param n
* @return
*/
public boolean isThree(int n) {
//(1,n)之间有且仅有1个除数
int count=0;
for(int i=2;i<n;i++) {
if(n%i==0) {
count++;
}
}
return count==1;
}
}
package test.leecode.math;
import org.junit.Assert;
import org.junit.Test;
import cn.fansunion.leecode.math.ThreeDivisors;
/**
* @author wen.lei@brgroup.com
*
* 2022-2-25
*/
public class ThreeDivisorsTest {
@Test
public void test() {
ThreeDivisors test = new ThreeDivisors();
Assert.assertFalse(test.isThree(1));
Assert.assertFalse(test.isThree(2));
Assert.assertFalse(test.isThree(3));
Assert.assertTrue(test.isThree(4));
Assert.assertFalse(test.isThree(5));
Assert.assertFalse(test.isThree(6));
Assert.assertFalse(test.isThree(16));
Assert.assertTrue(test.isThree(25));
Assert.assertFalse(test.isThree(124));
}
}