题目:
题解:
1.穷举两数和等于n
2.判断是否为素数
3.求差最小的两素数
优化方向:
1.差要最小,两数相隔距离就要最短,可以从n/2开始向两边扩散枚举
2.判断素数,枚举1-,如果有数字能被n整除就不是素数
public int[] getPrimeNumber(int number) {
int left = number / 2;
int right = number / 2;
while (left > 0 && right < number) {
if (isPrime(left) && isPrime(right)) {
return new int[] {left, right};
}
left--;
right++;
}
return null;
}
private boolean isPrime(int number) {
for (int i = 2; i <= Math.sqrt(number); i++) {
if (number % i == 0) {
return false;
}
}
return true;
}
外层循环n次,内层循环次,时间复杂度:O(n*)。