본문 바로가기
임베디드SW/알고리즘깨부수기

알고리즘 깨부수기: 3. 진약수의 합

by 바이너리 임베디드 2022. 6. 19.

알고리즘

1. 진약수의 합


자연수 N이 주어지면 자연수 N의 진약수의 합을 수식과 함께 출력하는 프로그램을 작성하세요.


입력설명
첫 줄에 자연수 N이 주어집니다. (3<N<=100)

 

출력설명
첫 줄에 더하는 수식과 함께 합을 출력합니다.

 

입력예제 1
20

 

출력예제 1
1 + 2 + 4 + 5 + 10 = 22

 

2. 나의 전략 풀이 방법

#include <stdio.h>

int main() 
{
	int num;
	int sum = 1;
	int i;
	
	scanf ("%d",&num);
	
	printf("1");
	
	for (i=2; i<num; i++)
	{
		if (num % i == 0)
		{
			printf(" + %d", i);
			sum += i;
		}
	}
	
	printf(" = %d",sum);
	
	return 0;
}

 

나머지 연산자를 사용해 풀었다.

 

 

3. 강사님 풀이 방법

#include<stdio.h>
int main(){
	int n, sum=1, i;
	scanf("%d", &n);
	printf("1 ");
	for(i=2; i<n; i++){
		if(n%i==0){
			sum+=i;
			printf("+ %d ", i);
		}
	}
	printf("= %d\n", sum);
	return 0;
}

 

4. Reflection

내가 푼 방식과 강사님이 푼 방식이 같다. 잘 풀었다!!

약수와 배수의 문제는 나머지 연산자를 사용해서 풀면 될것 같다.

댓글