We need to find the maximum distance between indices of prime numbers in the array. First, we identify which numbers are prime, then record the indices of all primes, and finally compute the difference between the maximum and minimum indices.
classSolution {
public:bool isPrime(int n) {
if (n <2) return false;
for (int i =2; i * i <= n; ++i) if (n % i ==0) return false;
return true;
}
intmaximumPrimeDifference(vector<int>& nums) {
int first =-1, last =-1;
for (int i =0; i < nums.size(); ++i) {
if (isPrime(nums[i])) {
if (first ==-1) first = i;
last = i;
}
}
return first ==-1?0: last - first;
}
};
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
funcisPrime(nint) bool {
ifn < 2 { returnfalse }
fori:=2; i*i<=n; i++ {
ifn%i==0 { returnfalse }
}
returntrue}
funcmaximumPrimeDifference(nums []int) int {
first, last:=-1, -1fori, x:=rangenums {
ifisPrime(x) {
iffirst==-1 { first = i }
last = i }
}
iffirst==-1 { return0 }
returnlast-first}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
classSolution {
privatebooleanisPrime(int n) {
if (n < 2) returnfalse;
for (int i = 2; i * i <= n; ++i) if (n % i == 0) returnfalse;
returntrue;
}
publicintmaximumPrimeDifference(int[] nums) {
int first =-1, last =-1;
for (int i = 0; i < nums.length; ++i) {
if (isPrime(nums[i])) {
if (first ==-1) first = i;
last = i;
}
}
return first ==-1 ? 0 : last - first;
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
classSolution {
privatefunisPrime(n: Int): Boolean {
if (n < 2) returnfalsefor (i in2..Math.sqrt(n.toDouble()).toInt()) if (n % i ==0) returnfalsereturntrue }
funmaximumPrimeDifference(nums: IntArray): Int {
var first = -1var last = -1for (i in nums.indices) {
if (isPrime(nums[i])) {
if (first == -1) first = i
last = i
}
}
returnif (first == -1) 0else last - first
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
classSolution:
defis_prime(self, n: int) -> bool:
if n <2:
returnFalsefor i in range(2, int(n **0.5) +1):
if n % i ==0:
returnFalsereturnTruedefmaximumPrimeDifference(self, nums: list[int]) -> int:
first = last =-1for i, x in enumerate(nums):
if self.is_prime(x):
if first ==-1:
first = i
last = i
return0if first ==-1else last - first
impl Solution {
pubfnmaximum_prime_difference(nums: Vec<i32>) -> i32 {
fnis_prime(n: i32) -> bool {
if n <2 { returnfalse; }
letmut i =2;
while i * i <= n {
if n % i ==0 { returnfalse; }
i +=1;
}
true }
letmut first =-1;
letmut last =-1;
for (i, &x) in nums.iter().enumerate() {
if is_prime(x) {
if first ==-1 { first = i asi32; }
last = i asi32;
}
}
if first ==-1 { 0 } else { last - first }
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
classSolution {
isPrime(n: number):boolean {
if (n<2) returnfalse;
for (leti=2; i*i<=n; ++i) if (n%i===0) returnfalse;
returntrue;
}
maximumPrimeDifference(nums: number[]):number {
letfirst=-1, last=-1;
for (leti=0; i<nums.length; ++i) {
if (this.isPrime(nums[i])) {
if (first===-1) first=i;
last=i;
}
}
returnfirst===-1?0 : last-first;
}
}