Function in Programming (1/2)
C언어
Contents
1️⃣ 함수(function)의 개념과 특징
1️⃣ 함수(function)의 개념과 특징
함수의 개념 🔽
💡요약: 함수는 입력을 받아 특정한 규칙에 따라 처리를 하고, 그 결과를 출력으로 내보내는 일련의 과정으로 이해하면 된다. 함수는 코드의 재사용성을 높이고, 복잡한 작업을 더 쉽게 수행할 수 있게 해주는 중요한 도구이다.

함수는 입력(input)을 받아서 특정한 작업을 수행한 후 출력(output)을 제공하는, 일종의 블랙 박스(black box)처럼 동작한다고 볼 수 있다. 여기서 max() 함수가 예시로 사용되었는데, 이는 입력받은 값들 중에서 가장 큰 값을 출력으로 반환하는 함수이다.
함수(function): 입력 값을 받아 특정 작업을 수행하고 그 결과를 반환하는 도구이다. 복잡한 계산이나 작업을 쉽게 처리할 수 있도록 도와준다.
입력(input): 함수가 작업을 수행하기 위해 받는 값을 뜻한다. 예를 들어,
max()함수는 여러 숫자를 입력으로 받아 그중 가장 큰 값을 찾아준다.출력(output): 함수가 작업을 수행한 후 결과로 반환하는 값이다.
max()함수의 경우 가장 큰 값이 출력으로 반환된다.
함수가 필요한 이유 (Why Functions are Necessary) 🔽
💡요약: 동일한 코드를 여러 곳에서 사용해야 할 때, 함수는 코드의 재사용성(reusability)을 높여주고, 코드의 중복(duplication)을 줄여준다. 함수를 사용하면 동일한 작업을 수행하는 코드를 여러 번 작성할 필요 없이 함수 호출만으로 같은 작업을 반복할 수 있다.
재사용성(reusability): 동일한 작업을 여러 번 수행할 때, 함수를 사용하면 코드의 중복을 줄이고 유지보수를 쉽게 할 수 있다.
중복 제거(removal of duplication): 동일한 코드를 여러 곳에 반복해서 작성하는 대신, 함수로 정의하여 필요할 때마다 호출할 수 있다.

동일한 코드를 여러 번 작성해야 하는 상황이다. 예를 들어, 별(*)을 30번 출력하는 코드를 두 번 작성하는 경우, 중복된 코드가 생기게 된다. 이는 유지보수가 어렵고, 실수할 가능성도 높아지게 된다. 이를 함수를 작성하여 동일한 코드를 하나로 만들 수 있게된다.

print_stars()라는 함수(function)를 작성하여 별을 출력하는 코드를 함수로 묶은 예제이다. 이제 별을 출력하려면 print_stars();라는 함수 호출만 하면 된다. 이렇게 하면 동일한 작업을 수행할 때마다 코드를 복사해서 붙여넣지 않아도 되므로 더 효율적이다.
함수의 특징 (Characteristics of Functions)🔽
💡요약: 함수는 특정한 작업을 수행하기 위해 필요한 명령어들의 모음으로, 반복적인 작업을 효율적으로 처리할 수 있게 도와준다.
- 명령어들의 모음(sets of commands): 함수는 특정 작업을 수행하기 위해 여러 명령어가 모여 있는 집합체이다. 이러한 명령어들은 함께 묶여서 한 번에 실행된다.
서로 구별되는 이름(distinct names): 함수는 각기 다른 이름을 가지고 있어, 코드 내에서 쉽게 구분할 수 있다. 예를 들어, 덧셈을 수행하는 함수는
add()로 명명한다.특정한 작업 수행(executing a specific task): 각 함수는 특정한 작업을 수행하도록 설계되어 있다.
add()함수는 두 수를 더하는 작업을 수행하는 예이다.입력과 출력(input and output): 함수는 입력값을 받아서, 그 결과를 출력으로 반환할 수 있다.

add()라는 함수는 입력값으로 3과 7을 받아 이를 더하고, 결과로 10을 출력한다.
함수의 장점 (Advantages of Functions) 🔽
코드 중복 방지(prevent code duplication): 함수를 사용하면 동일한 작업을 여러 곳에서 반복할 때, 코드의 중복을 피할 수 있다. 동일한 기능을 매번 다시 작성하지 않고, 함수로 정의해 필요할 때마다 호출할 수 있게 된다.
재사용성(reusability): 한 번 작성된 함수는 여러 번 재사용할 수 있어, 개발 시간을 줄이고 코드를 간결하게 유지할 수 있다.
모듈화(modularity): 함수를 사용하면 전체 프로그램을 여러 작은 모듈로 나눌 수 있다. 이렇게 하면 각 모듈을 독립적으로 개발하고 유지할 수 있어, 프로그램의 체계성을 높이고 유지보수를 쉽게 할 수 있다.

레고 블록을 사용하여 함수 이해해보자. 프로그램을 레고 블록처럼 작은 부분들로 나누어 각각의 블록이 특정한 기능(함수)을 수행하도록 설계하는 것이다. 이렇게 큰 작업을 여러 개의 작은 작업으로 나누어하는 개념을 “모듈화(modularity)”라고 하고 “작은 작업”을 함수로 정의한다. 이렇게 하면 프로그램이 체계적이고 이해하기 쉬워지며, 개발 과정과 유지보수도 수월해지게 된다.
함수의 종류 (Types of Functions)🔽
사용자 정의 함수(user-defined functions): 프로그래머가 필요에 따라 직접 만드는 함수이다. 기본적으로 제공되지 않는 특별한 기능이 필요할 때, 사용자가 함수를 정의하여 사용할 수 있다.
라이브러리 함수(library functions): 프로그래밍 언어에서 기본적으로 제공하는 함수들로, 자주 쓰이는 기능을 쉽게 사용할 수 있도록 만들어졌다. 예를 들어,
printf(),scanf(),sqrt()같은 함수들이 있다.

사용자 정의 함수는 원하는 기능을 직접 추가할 수 있는 유연함을 제공하고, 라이브러리 함수는 이미 제공된 기능을 손쉽게 사용할 수 있는 장점을 제공한다. 필요에 따라 직접 함수를 작성하거나, 이미 제공된 라이브러리 함수를 사용함으로써 개발 시간을 절약할 수 있다.
중간 점검 (Midpoint Check)🔽

함수가 필요한 이유는 무엇인가?
- 함수는 코드 중복을 방지(prevent code duplication)하고 재사용성(reusability)을 높이며, 프로그램을 체계적(organized)으로 유지할 수 있도록 도와준다. 동일한 작업을 반복할 때 함수로 정의하면 코드가 더 깔끔해지고 유지보수가 쉬워진다.
함수와 프로그램의 관계는?
- 함수는 프로그램 내에서 특정 작업(specific tasks)을 수행하는 작은 단위이다. 프로그램은 여러 함수로 구성될 수 있으며, 이 함수들이 상호작용하여 프로그램의 전체적인 기능을 완성한다. 함수를 사용하면 프로그램을 모듈화할 수 있어(modularize the program) 각 기능을 독립적으로 관리할 수 있게 된다.
컴파일러에서 지원되는 함수를 _______ 함수라고 한다.
- 라이브러리 함수(library functions)라고 한다. 라이브러리 함수는 프로그래밍 언어에서 기본적으로 제공되는 함수로, 자주 사용하는 기능을 쉽게 활용할 수 있도록 미리 구현된 함수들이다.
함수의 정의 (Function Definition) #1 - 구문(Syntax) 🔽
💡요약: 함수는 코드의 일부 작업을 묶어서 재사용할 수 있게 해주는 중요한 도구이며, 반환형, 이름, 매개변수, 몸체로 구성된다.

1. 반환형 (Return Type)
반환형(return type)은 함수가 작업을 수행한 후 반환하는 데이터의 자료형(data type)을 나타낸다. 예를 들어,
void는 함수가 아무 값도 반환하지 않는다는 뜻이다.반환형이
int라면, 함수는 정수형 데이터를 반환한다.예시:
int로 설정된 함수는 정수를 반환해야 한다.
2. 함수 이름 (Function Name)과 매개변수 (Parameters)
함수 이름(function name)은 함수가 호출될 때 사용되는 식별자이다. 이름은 함수의 역할을 잘 설명하도록(descriptive name) 지정하는 것이 좋다. 예를 들어,
print_stars는 별을 출력하는 함수이다. 또한 이름을 지을 때 동사 + 명사(verb + noun) 형태로 기능을 명확하게 나타내는 것이 좋다. 예를 들어,compute_average()는 평균을 계산하는 함수임을 쉽게 알 수 있다.매개변수(parameters)는 함수가 필요로 하는 입력 값들이다. 위 예시에서는 매개변수가 없지만, 일반적으로
()안에 변수 이름과 자료형을 지정하여 함수가 필요로 하는 값을 받도록 할 수 있다.
3. 함수 몸체 (Function Body)와 함수 헤더 (Function Header)
함수 헤더(function header)는 반환형, 함수 이름, 매개변수로 구성된 첫 줄을 일컫는다. 이 부분에서 함수의 역할을 정의하고, 필요한 값을 받는 형식을 지정한다.
함수 몸체(function body)는
{}안에 있는 부분으로, 함수가 수행할 작업을 포함한다. 이 예제에서for문은 별을 30번 출력하는 작업을 수행하게 된다.
💡예시상황: 함수 이름의 예제이다. 아래와 같은 방식으로 함수 이름을 지으면, 코드의 가독성이 높아지고, 함수의 기능을 쉽게 파악할 수 있게 된다.

int square(): 정수를 제공하는 함수double compute_average(): 평균을 구하는 함수void set_cursor_type(): 커서의 타입을 설정하는 함수
함수 호출 (Function Call) #1 🔽
💡요약: 함수 호출은 프로그램이 함수의 이름을 불러 함수 내의 작업을 수행하도록 지시하는 과정이다. 이는 코드의 흐름을 제어하고, 원하는 작업을 특정 위치에서 반복적으로 실행할 수 있도록 도와주는 중요한 개념이다.

함수 호출(function call)
- 함수 호출이란
print_stars()와 같이 함수의 이름을 불러(calling the function by its name) 함수를 실행하도록 지시하는 것이다..
- 함수 호출이란
실행 흐름의 중단과 이동
- 함수 호출이 발생하면 현재 실행 중이던 코드가 일시 중단(temporarily paused)되고, 프로그램 흐름이 호출된 함수로 이동한다. 함수 내부의 코드가 순서대로 실행되며, 호출된 함수의 작업이 완료될 때까지 기존 코드의 실행은 멈추게 된다.
실행 후 복귀
- 호출된 함수의 실행이 끝나면 프로그램은 다시 원래 위치로 돌아가(returns to the original location) 남은 코드를 계속 실행한다.
💡예시상황: 예제에서는 print_stars()라는 함수를 호출하고 있다. 이 함수는 별(*)을 30번 출력하는 기능을 한다.
프로그램이
print_stars();를 만나면 함수를 호출하고, 함수 내부 코드(for문)가 실행됨for문은printf("*");를 30번 반복하여 별을 출력함함수 실행이 끝나면 프로그램은 호출 위치로 돌아와 다음 코드를 계속해서 실행함.
💡추가정보

- 위의 예제처럼 함수는 여러번 호출될 수 있다.
예제 🔽
print_stars() 함수를 두 번 호출하여 화면에 별을 출력하고, 그 사이에 "Hello World!"를 출력하는 코드를 작성해본다.

함수 정의:
print_stars()함수는 별(*)을 30번 출력하는 기능을 수행한다. 함수 내부의for반복문이 이를 수행하게 된다.함수 호출(function call):
print_stars();라는 구문을 통해 함수를 호출한다.main()함수 내에서 두 번 호출되었으며, 첫 번째 호출 후"Hello World!"가 출력되고, 다시print_stars()가 호출된다.출력 흐름:
첫 번째
print_stars()호출로 별이 30번 출력된다."Hello World!"가 새로운 줄에 출력된다.두 번째
print_stars()호출로 별이 다시 30번 출력된다.
#include <stdio.h>
void print_stars() // 별을 출력하는 함수 정의
{
for (int i = 0; i < 30; i++)
printf("*");
}
int main(void)
{
print_stars(); // 첫 번째 함수 호출
printf("\nHello World!\n"); // "Hello World!" 출력
print_stars(); // 두 번째 함수 호출
return 0;
}

- 실행결과
매개 변수(Parameters) 및 반환값(Return Value) 🔽

매개 변수 (Parameters)
- 매개 변수(parameters)는 함수가 작업을 수행할 때 필요한 입력값이다. 이 예제에서는
int x와int y라는 두 매개 변수를 사용하여 두 개의 정수를 함수에 전달한다.
- 매개 변수(parameters)는 함수가 작업을 수행할 때 필요한 입력값이다. 이 예제에서는
함수 몸체 (Function Body)와 반환값 (Return Value)
함수 몸체(function body)는
{}안에 있는 부분으로, 함수가 수행할 작업을 포함하는데, 이 예제에서는if조건문을 사용하여x와y중 큰 값을 결정하고 반환한다.반환값(return value)은 함수가 실행을 완료한 후 호출한 위치로 전달하는 값이다. 이 함수는
return x;또는return y;를 통해 두 값 중 큰 값을 반환다.
💡요약: 위의 예제는 max() 함수가 두 개의 정수 입력을 받아, 그 중 더 큰 값을 찾아 반환하는 과정을 설명한다. 함수는 입력을 받아서 조건문을 통해 큰 값을 결정하고, 그 값을 결과로 반환한다. 함수는 매개 변수를 통해 필요한 입력을 받아 작업을 수행하고, 반환값을 통해 결과를 제공한다.

인수(Argument)와 매개변수(Parameter) #1 🔽

인수 (Argument)
인수(argument)는 함수가 호출될 때 실제로 함수에 전달되는 값(actual value passed to the function)이다. 인수는 함수가 작업을 수행하기 위해 사용하는 구체적인 데이터이다.
예를 들어,
max(10, 20);에서10과20은max함수로 전달되는 인수이다.
매개변수 (Parameter)
매개변수(parameter)는 함수가 인수를 받아들이기 위해 사용하는 변수(variable that receives the argument value)이다. 매개변수는 함수가 호출될 때 전달된 인수를 저장하여 함수 내에서 사용하게 해준다.
예를 들어,
int max(int x, int y)에서x와y는 매개변수이며, 함수가 호출될 때 인수10과20을 각각 받아오게 된다.
💡예시상황: 위의 이미지에서는 value = max(10, 20);라는 코드가 있다. 여기서 10과 20은 인수이고, int max(int x, int y) 함수 내의 x와 y는 매개변수이다. 인수 10과 20이 매개변수 x와 y에 전달되어, max 함수가 그 값을 사용하여 두 값 중 큰 값을 결정하고 반환하게 된다. 인수와 매개변수를 이해하면 함수 호출 시 데이터가 어떻게 전달되고, 함수 내에서 어떻게 사용되는지 쉽게 이해할 수 있게 된다.
인수(Argument)와 매개변수(Parameter) #2 - 추가적인 규칙 🔽
매개변수가 없는 함수 (Function without Parameter)
- 매개변수가 없는 함수는
print_stars(void)처럼 매개변수 위치에void를 쓰거나,print_stars()처럼 아무것도 적지 않아도 된다. 이는 함수가 호출될 때 별도의 값을 받지 않는다는 것을 의미한다.
- 매개변수가 없는 함수는
인수의 다양성 (Variety of Argument)
- 함수가 호출될 때마다 인수는 다르게 설정될 수 있다. 즉, 매번 호출 시 다른 값을 함수에 전달할 수 있다는 뜻이다. 이를 통해 함수는 다양한 입력을 처리할 수 있게 된다.
매개변수와 인수의 개수 일치 (Parameter and Argument must match exactly)
- 매개변수의 개수는 정확히 인수의 개수와 일치(must match exactly)해야 한다. 만약 매개변수와 인수의 개수가 일치하지 않으면 오류(error)가 발생하게 된다. 예를 들어,
max(int x, int y)라는 함수가 두 개의 매개변수를 요구하는데, 인수를 한 개만 전달하면 오류가 발생한다.
- 매개변수의 개수는 정확히 인수의 개수와 일치(must match exactly)해야 한다. 만약 매개변수와 인수의 개수가 일치하지 않으면 오류(error)가 발생하게 된다. 예를 들어,
💡예시상황: 매개변수의 개수가 맞지 않을 때 발생하는 상황을 생각해보자. 예를 들어 max(10);처럼 인수를 하나만 전달할 경우나 max(); 처럼 void인 경우 max 함수는 두 개의 매개변수를 요구하므로 오류가 발생하게 된다. 따라서 인수의 개수와 매개변수의 개수는 항상 일치해야 함을 기억하자

반환값(Return Value) 🔽
💡요약: 반환값은 함수가 작업을 수행한 후 호출된 위치로 결과를 돌려주는 값이다. 반환값은 함수가 수행한 계산이나 작업의 최종 결과라고 할 수 있다.

반환값 (Return Value)
- 반환값은 함수가 작업을 완료하고 호출한 곳으로 전달하는 결과 값이다. 이 값은 함수가 끝난 후
return문을 사용하여 반환된다.
- 반환값은 함수가 작업을 완료하고 호출한 곳으로 전달하는 결과 값이다. 이 값은 함수가 끝난 후
return문return문은 함수가 호출된 위치로 값을 돌려보낼 때 사용한다.return뒤에 계산된 값을 적으면 그 값이 반환된다.예를 들어,
return x;라고 하면 함수는x의 값을 호출한 곳으로 돌려준다.
반환값의 개수
- 함수는 여러 개의 인수(multiple arguments)를 받을 수 있지만, 반환값은 오직 하나(only one return value)만 가능하다. 이는 함수가 하나의 작업 결과만 반환한다는 것을 의미한다.
💡예시상황: 위의 이미지에서는 value = max(10, 20);라는 코드가 있다. 여기서 max(10, 20) 함수가 실행되어, 10과 20 중 더 큰 값이 반환되게 된다. 반환된 값은 value 변수에 저장된다.
중간 점검(Midpoint Check)
함수의 반환형이 없는 경우에는 어떻게 표시하는가?
- 반환형이 없는 함수(function without a return type)는
void키워드를 사용하여 표시한다. 예를 들어,void print_stars()는 반환값이 없는 함수이다.
- 반환형이 없는 함수(function without a return type)는
수식 (x+y+z)의 값을 반환하는 문장을 작성해보자.
수식
(x + y + z)의 값을 반환하는return문은 다음과 같다:return x + y + z;이
return문은x,y,z의 합을 계산하여 호출한 곳으로 돌려준다.
double형 변수 f를 매개 변수로 가지고 double형의 값을 반환하는 fabs() 함수 헤더를 정의해보자.
fabs()함수는double형 매개 변수를 하나 받고,double형 값을 반환한다. 함수 헤더는 다음과 같이 정의할 수 있다.double fabs(double f);여기서
double은 반환형을 나타내고,f는double형 매개 변수이다.
예제 🔽

#include <stdio.h>
int max(int x, int y) // 두 정수 중 더 큰 값을 반환하는 함수
{
if (x > y)
return x;
else
return y;
}
int main(void)
{
int x, y, larger;
printf("정수 2개를 입력하세요: ");
scanf("%d %d", &x, &y); // 사용자로부터 두 정수 입력 받기
larger = max(x, y); // max 함수 호출하여 더 큰 값 찾기
printf("더 큰 값은 %d입니다.\n", larger); // 결과 출력
return 0;
}
max()함수:max()함수는 두 개의 정수를 매개변수로 받아, 더 큰 값을 반환하는 함수이다.if문을 사용하여x가y보다 큰 경우x를 반환하고, 그렇지 않으면y를 반환한다.main()함수main()함수에서는 사용자로부터 두 개의 정수를 입력받고,max()함수를 호출하여 더 큰 값을 찾는다.scanf()함수를 사용하여 사용자의 입력을 받아 변수x와y에 저장한다.larger변수에max(x, y)의 결과를 저장한 후,printf()함수를 사용하여 더 큰 값을 화면에 출력한다.
생일 축하 함수 🔽

cCopy code#include <stdio.h>
void happyBirthday() // 생일 축하 메시지를 출력하는 함수
{
printf("생일축하 합니다! \n");
printf("생일축하 합니다! \n");
printf("사랑하는 친구의 ");
printf("생일축하 합니다! \n");
}
int main(void)
{
happyBirthday(); // happyBirthday 함수 호출
return 0;
}
함수 정의
happyBirthday()함수는 반환형이 없는void형 함수로, 생일 축하 메시지를 여러 줄로 출력한다.printf()함수를 사용하여 각 줄마다 생일 축하 메시지를 출력한다.
함수 호출
main()함수에서는happyBirthday()함수를 호출하여 생일 축하 메시지를 화면에 출력한다.happyBirthday()가 호출되면 정의된 메시지가 차례로 출력된다.
정수를 입력받는 get_integer()함수 🔽

함수 정의
get_integer()함수는 반환형이int형이므로 정수 값을 반환한다.이 함수는 매개변수를 받지 않으므로
(void)로 표시하여 인수를 필요로 하지 않는 함수임을 나타낸다.
입력 안내와 입력값 저장
printf("정수를 입력하세요: ");는 사용자에게 입력을 요청하는 메시지를 화면에 출력한다.scanf("%d", &value);는 사용자가 입력한 정수를value변수에 저장한다.&기호는value변수의 메모리 주소를 가리키며,scanf가 입력값을 해당 변수에 저장하도록 한다.
반환값
return value;는 함수가value변수에 저장된 입력값을 호출한 위치로 반환하게 한다. 이로써 함수는 사용자로부터 입력받은 정수를 반환하게 된다.
#include <stdio.h>
// 사용자로부터 정수를 입력받아 반환하는 함수
int get_integer(void)
{
int value; // 정수를 저장할 변수 선언
printf("정수를 입력하세요: "); // 사용자에게 안내 메시지 출력
scanf("%d", &value); // 입력받은 정수를 value에 저장
return value; // 입력된 정수를 반환
}
int main() {
int number = get_integer(); // get_integer 함수 호출하여 입력받은 정수 저장
printf("입력한 정수는 %d입니다.\n", number); // 결과 출력
return 0;
}
이 코드를 실행하면 다음과 같은 흐름으로 진행된다:
정수를 입력하세요: 15
입력한 정수는 15입니다.
정수의 합을 계산하는 add() 함수 🔽

get_integer()함수: 사용자에게 정수를 입력하도록 요청하고, 입력받은 값을 반환한다. 이 함수는 여러 번 호출되어도 같은 방식으로 작동하여 정수를 입력받아 반환할 수 있다.add()함수- 두 개의 정수를 매개변수로 받아, 두 값의 합을 계산하여 반환한다.
return x + y;문을 통해 두 수의 합을 반환한다.
- 두 개의 정수를 매개변수로 받아, 두 값의 합을 계산하여 반환한다.
main()함수의 동작 흐름get_integer()함수를 두 번 호출하여 사용자로부터 두 정수를 입력받고, 각각x와y에 저장한다.add(x, y)함수를 호출하여x와y의 합을 계산하고, 그 결과를sum에 저장한다.printf()를 통해 두 수의 합을 출력한다.
#include <stdio.h>
// 사용자로부터 정수를 입력받아 반환하는 함수
int get_integer()
{
int value;
printf("정수를 입력하세요: ");
scanf("%d", &value);
return value;
}
// 두 정수를 더하여 반환하는 함수
int add(int x, int y)
{
return x + y;
}
int main(void)
{
int x = get_integer(); // 첫 번째 정수 입력
int y = get_integer(); // 두 번째 정수 입력
int sum = add(x, y); // 두 수의 합 계산
printf("두 수의 합은 %d입니다.\n", sum); // 결과 출력
return 0;
}
이 프로그램을 실행하면 다음과 같은 흐름으로 진행된다:
정수를 입력하세요: 10
정수를 입력하세요: 20
두 수의 합은 30입니다.
중간점검 🔽
인수와 매개변수는 어떤 관계가 있는가?
인수(argument)는 함수가 호출될 때 실제로 함수에 전달되는 값이다.
매개변수(parameter)는 함수가 인수를 받아들이기 위해 선언하는 변수이다.
관계적으로, 인수는 매개변수에 전달되는 실제 값이며, 매개변수는 함수가 그 값을 사용할 수 있도록 정의된 변수이다.
예를 들어,
add(5, 10)에서5와10은 인수이며,add함수의 매개변수x와y는 이 값을 받아 작업에 사용하게 된다.
반환값이
double형으로 정의된 함수에서 정수를 반환하면 어떤 일이 발생할까?함수가
double형으로 정의되었다면 반환되는 값은 자동으로double형으로 변환된다.함수가 정수를 반환해도 컴파일러가 정수를
double형으로 변환하여 반환하므로 오류는 발생하지 않는다. 대신, 정수 값이 소수점이 있는double형으로 변환된다. 예를 들어,3이 반환되면3.0으로 변환된다.
소수(prime number)

소수의 정의
소수는 양의 정수 중에서 1과 자기 자신만을 약수로 가지는 수입니다. 예를 들어, 2, 3, 5, 7 등은 소수이다.
소수 판별 프로그램은 입력된 정수를 2부터 해당 숫자 - 1까지 나누어 나머지가 0인 경우가 있으면 소수가 아닌 것으로 판단하게 된다.
알고리즘
입력된 정수를 변수
n에 저장한다.for루프를 이용해i를 2부터n - 1까지 증가시키면서n을i로 나누어 나머지가 0인지 확인한다.나머지가 0인 경우 약수가 존재하므로 소수가 아니다. 그렇지 않으면 소수이다.
함수 설명
get_integer()함수는 사용자로부터 정수를 입력받아 반환한다..is_prime(int n)함수는 입력된 정수가 소수인지 판별하여 결과를 반환한다. 소수일 경우 1을, 소수가 아닐 경우 0을 반환한다.
#include <stdio.h>
// 사용자로부터 정수를 입력받아 반환하는 함수
int get_integer(void)
{
int n;
printf("정수를 입력하세요: ");
scanf("%d", &n);
return n;
}
// 입력된 정수가 소수인지 판별하는 함수
int is_prime(int n)
{
int i;
for (i = 2; i < n; i++) {
if (n % i == 0) // 나누어 떨어지면 소수가 아님
return 0;
}
return 1; // 나누어 떨어지지 않으면 소수
}
int main(void)
{
int n;
n = get_integer(); // 사용자로부터 정수 입력 받기
// 소수 여부를 출력
if (is_prime(n) == 1)
printf("%d는 소수입니다.\n", n);
else
printf("%d는 소수가 아닙니다.\n", n);
return 0;
}
이 프로그램을 실행하면 다음과 같은 흐름으로 진행된다.
정수를 입력하세요: 12229
12229는 소수가 아닙니다.


