Home > Study > C Language > C Example > [ex58] 진약수의 개수

[ex58] 진약수의 개수
Study Language

문제 설명


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 습관화 필요