본문 바로가기
Solution_/백준 Algorithm

[백준 4948] 베르트랑 공준 _ c language

by 낭람_ 2018. 5. 6.
반응형

우선 for문을 이용하여 에라토스테네스의 체를 만든 후 while문을 통하여 입력이 0이 될때까지 쭉 반복문을 돌린다.

그 후 에라토스테네스의 체에서 소수가 몇개인지 출력을 하면 된다.

#include<stdio.h>
#include<stdlib.h>

int main() {

int arr[300000];
arr[0] = 0;
arr[1] = 0;
int i, j, num;
int array = 1;
int *result;
int count = 0;
result = (int*)malloc(sizeof(int)*array);

for (i = 2; i <= 300000; i++)
arr[i] = 1;

for (i = 2; i <= 300000; i++) {
if (arr[i] == 1) {
for (j = i + i; j < 300000; j += i) {
arr[j] = 0;
}
}
else continue;
}

while (1) {
scanf("%d", &num);
if (num == 0) break;
array++;
result = (int*)realloc(result, sizeof(int)*array);
for (i = num + 1; i <= num * 2; i++) {
if (arr[i] == 0) continue;
else if (arr[i] == 1) count++;
}

result[array-2] = count;
count = 0;
}

for (i = 0; i < array-1; i++) printf("%d\n", result[i]);
return 0;

}


반응형

댓글