아하
생활

생활꿀팁

탈퇴한 사용자
탈퇴한 사용자

0~100 의 난수로 이루어진 배열에서 소수(prime number)를 찾아 다른 배열에 따로 저장하는 법을 알고 싶습니다

#include <stdio.h>

#include <stdlib.h>

#include <time.h>

int i, j;

int data[99];

int prime[99];

int main()

{

srand((int)time(NULL));

for (i = 0; i < 99; i++)

{

data[i] = rand() % 1000;

}

for (i = 0; i < 99; i++)

{

for (j = 2; j < data[i]; j++)

{

if ((data[i] % j) == 0)

break;

}

if (data[i] == j)

{

data[i] = prime[i];

}

}

return 0;

}

잘 안되네요 ㅠㅠ

55글자 더 채워주세요.
2개의 답변이 있어요!
  • 프알못
    프알못
    #include <stdio.h> #include <stdlib.h> #include <time.h> int main() { int i, j; int data[99]; int prime[99]; int primeCount = 0; // 배열 prime에 있는 소수의 개수 srand((int)time(NULL)); for (i = 0; i < 99; i++) { data[i] = rand() % 1000; } for (i = 0; i < 99; i++) { for (j = 2; j < data[i]; j++) { if ((data[i] % j) == 0) break; } if (data[i] == j) { prime[primeCount++] = data[i]; // 소수 하나 추가 } } return 0; }

    주석이 있는 두 줄만 추가/수정했습니다.

    prime[primeCount++] = data[i];

    A의 값을 B에 대입하려면 A = B가 아니라 B = A로 써야 합니다.

  • 일단 data 배열에는 0~999의 난수가 들어가 있을 거 같습니다. 의도한 바가 맞나요?

    0~98 의 인덱스를 가지니 총 99개의 숫자가 들어있을 거고요.

    소수를 100개를 찾는건 아니죠? 위 코드는 소수를 100개 찾으려는 의도 같네요.

    2~100 의 숫자 중에 소수를 찾으려면 아래와 같이 하면 됩니다.

    int k = 0;

    for(i=2;i<=100;i++){

    int is_prime = 1;

    for(j=2; j<j; j++){

    if(i%j==0){

    is_prime = -1;

    break;

    }

    }

    if(is_prime==1){

    data[k] = i;

    k++;

    }

    }