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;
}
잘 안되네요 ㅠㅠ
- #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++;
}
}