반응형
열혈 c 프로그래밍 Part01 도전 5 답안
문제 : 10개의 소수(Prime Number)을 출력하는 프로그램을 작성해보았습니다.
return 0의 뜻은 제일 아래에 있음
#include<stdio.h>
int main(){
int PrimeNum; //소수 저장 변수
int turn=0; //소수 개수 세는 변수
for (int i=2;i<30;i++){ //소수의 가능성 있는 수를 돌리는 반복함수
PrimeNum=i; // 소수의 가능성이 있는 수를 일단 PrimeNum에 넣어준 후
//아래 반복문에서 합/불을 결정한다
for(int j=2;j<i;j++){ //반복문 1번 설명은 아래에
if((i%j)==0) //조건문 1번 설명은 아래에
PrimeNum=0;
}
if(PrimeNum!=0){ //소수의 개수 세는 조건문
turn++;
printf("%d ",PrimeNum);
}
if(turn == 10)
return 0; //설명은 아래에
}
}
반복문 1번
- 반복문 1번을 설정할 때 제일 신경 쓴건 i<j의 설정이었는데 모든 수는 자기 자신으로 나누어질 수 밖에 없음으로 i<j로 설정했습니다.
조건문 1번
- 이 문제를 풀면서 '~~로 밖에 나눠지지 않는다'는 구절이 매우 중요하다는 걸 깨달았습니다. 이때는 여집합의 개념을 사용하는게 쉽습니다.
- 소수는 1과 자기 자신으로'만' 나누어 질 수 있기 때문에 '1과 자기자신의 여집합에' 집중해서 다른 수로 나누어진다면 소수의 후보에서 탈락시켜야 합니다.
return 문
- 원래는 return을 제일 아래에 쓰고 break문을 사용했습니다.
- 조금더 나은 코딩을 하려고 생각해보니 return 자체가 1.값의 반환도 되지만 2.함수의 종료를 뜻하기도 하다는게 떠올랐습니다.
- main함수의 return 0;은 해당 함수를 정상적으로 끝내고서 운영체제에게 기술한 값을 반환하고 현재 실행중인 해당 함수를 벗어나겠다는 뜻입니다. 그중에서도 0을 return하는 것은 함수를 성공적으로 끝냈다는 의미라고 합니다.
- return -1로 -1를 반환할 때도 있는데 보통 이럴때는 에러를 뜻하는 것이라고 합니다.
- -1를 return 하나 0을 return 하나 프로그램에 특정 함수를 전달하는 것은 아닙니다 단지 프로그래머들끼리 -1는 에러 0은 성공적인 프로그램 종료라는 약속을 했기에 관습적으로 그렇게 사용하는 것입니다.
- 즉 break;와 return 0;은 의미 중첩이기에 return 0;을 사용하는 것이 낫다는 판단을 했습니다.
반응형
'개발 공부 > C언어' 카테고리의 다른 글
#6 C언어 사칙연산할 때의 자료형 변환 (0) | 2022.08.01 |
---|---|
#5 C언어 (++i, i++) 후위연산 전위연산 차이점 쉽게 이해하는 법 (0) | 2022.07.31 |
#3 C언어 재귀함수를 쉽게 풀어서 설명해보았습니다. (0) | 2022.07.31 |
#2 C언어 double과 float의 서식문자 %lf, %f 뭘 사용해야 하는걸까? (0) | 2022.07.31 |
#1 C언어의 루트와 지수함수 사용하는 법 <math.h> (0) | 2022.07.31 |
댓글