我尝试做一个函数,以便对数组进行排序,然后只显示素数。但我的数组的所有元素都是随机数,问题是函数只显示负素数而不是像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;
}
答案 0 :(得分:0)
我看到代码有3个问题: 你应该回k而不是j。 k是sort_arr的大小 你应该循环到arr [i] / 2,而不是小于那个(参见下面的代码中的&lt; =) 3.你没有处理负数。将您的循环更改为以下内容:
A = (struct a**)realloc(A, 2*sizeof(struct a*));
如果没有打印您的值的代码,我不确定您正在寻找什么,但希望修复这些将解决您的问题。