C语言 数组中的最大素数



我的任务是找到数组中的最大素数。我的代码不工作的数字与一个以上的数字。在这种情况下,函数只返回第一个数字。我想我有一些问题的指针?

#include <stdio.h>
int maxprime(int* array, int size)
{
int max=0,i,j,a,counter=0;
for(i=0;i<size;i++){
a=array[i];
for(j=2;j<a;j++){
if(a%j==0) break;
counter++;
}
if(counter==a-2) {
if(a>max)
max=a;
}
}
return max;
}
int main()
{
int array[10] = {225, 224, 223, 226};                                                             
printf("%d", maxprime(array, 4));
}

正如另一个响应所指出的那样,您的counter变量毫无意义。您所需要做的就是检查是否通过break:

退出了最内层循环。
#include <stdbool.h>
int maxprime(int* array, int size)
{
int max=0;
for(int i=0;i<size;i++){
/* assume every number is prime */
bool prime=true;
int a=array[i];
for(int j=2;j<a;j++){
if(a%j==0) {
/* was divisible, so not prime after all */
prime=false;
break;
}
}
/* only update max if you found a prime */
if (prime) max=a>max?a:max;
}                                                                                                 
return max;
}

最新更新