반응형
우선 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;
}
반응형
'Solution_ > 백준 Algorithm' 카테고리의 다른 글
[백준 2557] Hello World _ c language (0) | 2018.05.13 |
---|---|
[백준 1001] A-B _ c language (0) | 2018.05.07 |
[백준 1000] A+B _ c language (0) | 2018.05.06 |
[백준 5622] 다이얼 _ c language (0) | 2018.05.06 |
[백준 1032] 명령 프롬프트 _ c language (0) | 2018.05.06 |
댓글