c언어 소스코드 질문합니다.
조회수 451회
제가 작성하고 싶은 조건은 아래 3가지 입니다.
- 첫 번째 줄에 모든 소수를 차례대로 출력
- 두 번째 줄에 소수의 개수를 출력
- 세번째 줄에 소수의 최대, 최소 값과 두 수의 합을 출력
첫번째 줄은 코드를 작성하였습니다.
두번째는 res
를 이용하였습니다. 그런데 여기서 res++;
코드를 어디에 붙여야 하나요?
위치 알려주세요. 그리고
3번째 조건은 어떻게 코드를 짜야하나요?
<작성한 코드>
#include <stdio.h>
#include <math.h>
#define size 1000001
int num[size] = { 0, };
int main() {
int M, N, i, j, res = 0;
int tmp = 0;
for (i = 2; i < size; i++)
num[i] = i;
scanf_s("%d %d", &M, &N);
tmp = (int)sqrt(N);
for (i = 2; i <= tmp; i++) {
if (num[i] == 0)
continue;
else {
for (j = i + 1; j <= N; j++) {
if (num[j] == 0)
continue;
if (num[j] % i == 0)
num[j] = 0;
}
}
}
for (i = M; i <= N; i++) {
if (num[i] != 0)
printf("%d", i);
}
printf("\n%d", res);
return 0;
}
res++
추가하기- 3번째 조건 달성하기
-
(•́ ✖ •̀)
알 수 없는 사용자 - 〉
1 답변
-
변수명을 바꾸는게좋을것같습니다. 예:
int N, M; scanf_s("%d %d", &N, &M); printf("%d", N + M);
와 같이 자기혼자서 짧은코드를 작성할때는 "?변수는 ~라는 뜻이구나"하고 알 수있지만 단체로(특히 질문할때)는 가독성이 안좋고, 답변하기도 귀찮아집니다. 아래코드를 참고하세요.
#include <stdio.h> int main() { int n, prime_count = 0, index = 0, arr[100]; scanf_s("%d", &n); for (int i=2; i <= n; i++) { int count = 0; for (int j=1; j <= i; j++) { if (i % j == 0) { count++; } } if (count == 2) { arr[prime_count] = i; prime_count++; printf("%d ", i); //1 } } printf("\n"); //2 printf("%d\n", prime_count); //2 int min = arr[0], max = arr[0]; for (int i=0; i < prime_count; i++) { if (arr[i] < min) { min = arr[i]; } if (arr[i] > max) { max = arr[i]; } } printf("%d %d %d", min, max, min + max); //3 return 0; }
댓글 입력