문제 설명
2개의 정수 N, M을 입력 받아 N부터 M까지 차례로 증가하면서 각 정수들의 진약수를 구하여 진약수의 개수가 가장 많은 정수를 찾아 인쇄한다.
진약수란 자신을 제외한 약수들을 말한다.
예로 6의 약수는 1, 2, 3, 6인데 자신을 제외한 진약수는 1, 2, 3인 3개이다.
단 함수를 설계하여 구현 한다.
#include <stdio.h>
int Solve(int n, int m)
{
//여기서 부터 작성
}
int main(void)
{
int N, M;
scanf("%d %d", &N, &M);
printf("%d\n", Solve(N, M));
return 0;
}
입력 설명
순서대로 N과 M을 입력 받는다 ( 1≦ N, M ≦ 10,000 )
출력 설명
N부터 M까지 수중에서 진약수의 개수가 가장 많은 정수를 출력한다. 동일한 값이 여러 개일 경우 가장 작은 값을 출력한다.
입력 예시
1 10
출력 예시
6
정답 코드
#include <stdio.h>
int Solve(int n, int m)
{
int num = 0, maxv = 0;
for (int i = n; i <= m; i++)
{
int cnt = 0;
for (int j = 1; j < i; j++)
{
if (i%j == 0) cnt++;
}
if (cnt > maxv)
{
maxv = cnt;
num = i;
}
}
return num;
}
int main(void)
{
int N, M;
scanf("%d %d", &N, &M);
printf("%d\n", Solve(N, M));
return 0;
}
메모
printf 내부의 \n 습관화 필요