Language/C

[ C ] [ 반복문 연습 문제 ] 약수 개수 출력 프로그램

곽수진 2021. 10. 13. 12:22
반응형
사용자에게 입력받은 양수의 약수를 출력하는 프로그램을 작성해보자.
do문 ver.

 

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>

int main(void) {

	int a;
	int num;
	int cnt=0;

	printf("어떤 수의 약수를 구할까요? ");
	scanf("%d", &num);

	a = num;
	do {
		if (!(num % a)) {
			printf("%d ", a);
			cnt++;
		}
		a--;
	} while (a>0);

	printf("\n약수 개수 %d\n", cnt);

	if (cnt <= 2)
		printf("\n소수입니다.");
		
	return 0;
}

▶ 사용자에게 입력받는 수는 변수 num, 반복문을 수행할 변수는 a, 약수의 개수를 출력할 변수는 cnt로 지정

 

int cnt = 0 : 약수의 개수를 출력하는 변수는 처음에 0으로 초기화

 

▶ 반복문(변수 a)은 사용자가 입력한 수를 시작으로 0보다 클 때까지 값을 하나씩 줄여가며 수행

    → 약수를 큰 수부터 나열하기 위함

    → 약수를 작은 수(1)부터 출력하려면 다음과 같이 변경

초기값 : a = 1;
조건문 : a <= num;
제어값 : a++;

 

▶ 사용자가 입력한 수를 a값으로 나누었을 때 0으로 나누어 떨어지면 그 값을 출력하고 cnt 값을 1 늘려줌

 

if (cnt <= 2) : cnt값이 2보다 작을 경우에는 소수이므로 '소수입니다.' 출력

    → 소수 : 1과 자기 자신만을 약수로 가지는 값

 

 

출력 결과 모습

 

 


 

 

for문 ver.

 

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>

int main(void) {

	int a;
	int num;
	int cnt=0;

	printf("어떤 수의 약수를 구할까요? ");
	scanf("%d", &num);
	
	for (a = num; a > 0; a--)
		if (num % a == 0) {
			printf("%d ", a);
			cnt++;
		}
		

	printf("\n약수 개수 %d\n", cnt);

	if (cnt <= 2)
		printf("\n소수입니다.");
		
	return 0;
}

 

 

출력 결과 모습

 

 


 

 

while문 ver.

 

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>

int main(void) {

	int a;
	int num;
	int cnt = 0;

	printf("어떤 수의 약수를 구할까요? ");
	scanf("%d", &num);

	a = num;
	while (a>0)
	{
		if (num % a == 0) {
			printf("%d ", a);
			cnt++;
		}
		a--;
	}

	printf("\n약수의 개수 %d\n", cnt);

	if (cnt <= 2)
		printf("\n소수입니다.\n");

	return 0;
}

 

출력 결과 모습

반응형