도드넷
정보처리기능사 실기#17 - 완전수 알고리즘, 완전수란 뭔가요? 본문
음, 완전수에 관한건 처음보네. 정보처리기능사 실기 열일곱번째 유형은 완전수에 관한것인데요.
완전수가 무엇인지 알아본뒤 완전수 구하는 알고리즘을 알아봅니다.
My bonny pony lassie :3
정보처리기능사 실기시험 요점정리#17 - 완전수 그리고 완전수 알고리즘
1. 완전수란?
- 완전수는 자신을 제외한 자신의 약수를 더하면 자신이 나오는 기묘한 숫자.
- 완전수 예를 들면, 6이 있는데 6의 약수는 6 3 2 1 인데 자신을 제외하면 3 2 1 이를 모두 더하면 6.
2. 완전수 알고리즘의 핵심
- 자신을 제외한 약수를 구해야한다.
- 약수는 대상수를 어떤수로 나눴을때 나머지가 0일때 나눈 수가 약수가 된다.
- 이를 식으로 표현하면 N mod X = 0 이면 나누어 떨어지므로 X는 N의 약수
- 또는 R = N - (N/X) x X 일떄 R = 0 이면 나누어 떨어지므로 X는 N의 약수
- 그리고 구한 약수들을 더한 합값이 대상수와 동일하면 대상수는 완전수다.
* 그러고보니 그런... 약수의 성질???
- N의 약수는 N/2보다 같거나 작다.
- 고로 약수를 구할때 대상수N(나눠지는 목표수)/2 해주고 이것을 나머지가 0인지 구분하는 루프를 돌릴때
루프아웃 포인트로 하면 자기자신을 약수로 구하지도않으면서 불필요한 연산과정을 줄일 수 있게 된다.
완전수 구하는 알고리즘 예제
1 ~ 1000 까지의 자연수중 완전수를 구해서 모두 더해서 출력하는 알고리즘은?
N : 1~1000이 될 대상수 변수
J : 나누는수 변수, 약수변수
R : 나머지 변수
SUM : 약수 합
SSUM : 완전수 합
STARTING POINT1
N = N + 1
J = 0
STARTING POINT2
J = J + 1
R = N - (N/J) x J //나머지 구하기
R = 0 이면 SUM = SUM + J //약수니까 더해줌
N/2 > J 이면 STARTING POINT2 아니면 OUT POINT1로 // N/2을 루핑 통제변수로 정함으로써 불필요한
연산을 제외하는동시에 자기자신은 약수에서 제외됨!
OUT POINT1
N = SUM 이면 이하 진행 아니면 STARTING POINT2로 가서 반복
SSUM = SSUM + N
N = 1000 이면 OUT POINT2로 아니면 STARTING POINT1로 가서 반복
OUT POINT2
출력::SSUM
'창고 > 정보처리기능사[완]' 카테고리의 다른 글
정보처리기능사 실기 기출문제 유형#1 - 수열 알고리즘 (0) | 2016.05.05 |
---|---|
정보처리기능사 알고리즘#18 - ㄹ배열 알고리즘 (0) | 2016.05.04 |
정보처리기능사 실기 알고리즘#16 - 소수 알고리즘! (0) | 2016.04.27 |
정보처리 실기#15 - 저장된형태 검색 알고리즘에 대하여! (0) | 2016.04.26 |
정보처리 기능사 실기 유형#14 - 십의 자리 짝수 (0) | 2016.04.25 |