我尝试执行一个函数来对数组进行排序并仅显示素数。但我的数组的所有元素都是随机数,问题是该函数只显示负素数,而不是像 7 和 3 这样的正素数,我该怎么办才能解决这个问题
int prime_arr(int size, int *arr, int *sort_arr)
{
int i, j, k = 0, flag;
for (i = 0; i < size; i++)
{
flag = 0;
for (j = 2; j < arr[i]/2; j++)
{
if (arr[i] % j == 0){
flag = 1;
break;
}
}
if (flag == 0){
sort_arr[k++] = arr[i];
}
}
return j;
}
最佳答案
我发现代码有 3 个问题: 1. 你应该返回k,而不是j。 k 是 sort_arr 的大小 2. 你应该循环直到arr[i]/2,不能小于该值(参见下面代码中的<=) 3. 你不处理负数。将循环更改为以下内容:
for (j = 2; j <= abs(arr[i])/2; j++)
如果没有打印您的值的代码,我不确定您到底在寻找什么,但希望解决这些问题可以解决您的问题。
关于c - C 中的质数到数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37039332/