已知:
给一 正整数 n (1 <= n <= 10^18). 判断这个数是否正好只有 3 个不同的因子, 如果正好有 3 个不同的因子就返回 true, 否则返回 false
样例:
给出 n = 9, 返回 true 数字 9 正好有 3 个因子: 1, 3, 9, 所以返回 true.
给出 n = 10, 返回 false
思路:
1 2 4
1 3 9
1 5 25 ...
刚好三个因子的最简单的想法就是N的开方是个整数且是个素数,即N分解质因数只能得到一个数字(N的开方)。
解题步骤:
①判断N开方是否为整数,是则继续,否则返回false;
②判断N开方是否为素数,是则返回true,否则返回false;
代码如下:
public class Solution {
public boolean isThreeDisctFactors(long n) {
double temp = Math.sqrt(n);
if (temp % 1 != 0) {
return false;
} else {
return isPrime((long) temp);
}
}
private boolean isPrime(long temp) {
if (temp <= 1) {
return false;
}
if (temp == 2) {
return true;
}
for (long i = 2; i * i <= temp; i++) {
if (temp % i == 0) {
return false;
}
}
return true;
}
}
谢谢您的阅读,希望对您有所帮助.