给你一个整数数组 nums和其长度numsSize,
返回两个(不一定不同的)质数在 nums
中 下标 的 最大距离
int maximumPrimeDifference(int* nums, int numsSize) {
int min=numsSize,max=0;
int is_prime(int number) {
if (number <= 1) return 0;
for (int i = 2; i * i <= number; i++) {
if (number % i == 0) return 0;
}
return 1;
}
for(int i=0;i<numsSize;i++){
if(is_prime(nums[i])==1){
min=i;
break;
}
}
for(int i=numsSize-1;i>=0;i--){
if(is_prime(nums[i])==1){
max=i;
break;
}
}
return (max-min);
}
定义两个整形数据min,max分别用来存储最小和最大下标,定义函数is_prime(int number)用来判断接受的整数是否为质数,如果是则返回1,然后给予的数组进行遍历,
for(int i=0;i<numsSize;i++){
if(is_prime(nums[i])==1){
min=i;
break;
}
}
表示从数组首元素往后进行遍历,当有一个数组数为质数时,将min赋值成i,同时结束遍历(即得到第一个质数的下标)
for(int i=numsSize-1;i>=0;i--){
if(is_prime(nums[i])==1){
max=i;
break;
}
}
表示从数组末元素往前进行遍历,当有一个数组数为质数时,将max赋值成i,同时结束遍历(即得到最后一个质数的下标)
最后返回max-min的值,即得到质数的最大距离