将在数字数组中找到素数的函数

时间:2015-01-08 19:23:55

标签: c function

该函数接受数组的三个元素,并且在这三个元素中找到第一个素数并将其放在第一个位置,然后它移动到下一个元素并在这三个元素之间找到素数,如果没有这些数字是素数,没有变化。最后两个数字保持不变。这是我的代码,有一些麻烦。想要一些帮助。 为了更清楚,前三项让我们说A [i] A [i + 1] A [i + 2]素数放在A [i]

#include <stdio.h>

#include <stdlib.h>

#include <ctype.h>

#define ITEMS 10



int Transform(int *num,int k,int j,int x){

    while(j!=ITEMS-3){


    if(num[j]%2==0)

    break;

    if(num[j]%2!=0)

    num[x]=num[j];

    j++;

    k++;

    x++;

    if(num[k]%2==0)

    break;

    if(num[k]%2!=0)

    num[x]=num[k];

    j++;

    k++;

    x++;

    if(num[x]%2==0)

    break;

    if(num[x]%2!=0)

    num[x]=num[x];

    j++;

    k++;

    x++;
}

}

        int main(void){


        int num[ITEMS];

        int i,j,k,x,pom;

        i=0;

        k=i+1;

        j=i+2;

        x=i;

        for(i=0;i<ITEMS;i++){

        printf("Enter the array : /n");

        scanf("%d",num[i]);

        pom=Transform(num,j,k,x);


        printf("%d",pom);

    }

        return 0;

}

2 个答案:

答案 0 :(得分:0)

给定int num[ITEMS]你可能意味着:

scanf("%d", &num[i]);
            ^

如果你省略,你会让scanf认为num[i]中的任何内容都是地址。

答案 1 :(得分:0)

您想要找到数组中每三个数字的第一个素数。

for(int i = 0; i < len; i += 3)
    for(int j = i; j < i+3; j++)
        if(isPrime(nums(j)))
        {
            primes[i/3] = nums[j];
            break;
        }

代码是这样的,但我还没有测试过。