目录
3115. 质数的最大距离
题目描述:
给你一个整数数组 nums
。
返回两个(不一定不同的)质数在 nums
中 下标 的 最大距离。
示例 1:
输入: nums = [4,2,9,5,3]
输出: 3
解释: nums[1]
、nums[3]
和 nums[4]
是质数。因此答案是 |4 - 1| = 3
。
示例 2:
输入: nums = [4,8,2,8]
输出: 0
解释: nums[2]
是质数。因为只有一个质数,所以答案是 |2 - 2| = 0
。
实现代码与解析:
筛质数
class Solution {
int N = 101;
boolean[] np = new boolean[N];
public int maximumPrimeDifference(int[] nums) {
getPrimes();
int i = 0;
while (!isPrime(nums[i])) {
i++;
}
int j = nums.length - 1;
while (!isPrime(nums[j])) {
j--;
}
return j - i;
}
public void getPrimes() {
np[1] = true;
for (int i = 2; i * i <= N; i++) {
if (!np[i]) {
for (int j = i * i; j <= N; j += i) {
np[j] = true;
}
}
}
}
public boolean isPrime(int num) {
if (np[num]) {
return false;
} else {
return true;
}
}
}
原理思路:
筛选质数模板题。