[JAVA] 입력값 이하의 모든 완전수 구하기

2023. 3. 20. 07:07
반응형

■ 문제

자연수를 입력받고, 그 자연수 이하의 모든 완전수 출력 하기

 

 

완전수란 , 자기 자신을 제외한

약수들의 합이 자기 자신이 되는 수를 말합니다.

 

 

예를 들어 완전수로 6과 28이 있습니다.

 

6 = 1+2+3 (*6의 약수)

28 = 1+2+4+7+14 (*28의 약수)

 

 

 

직접 생각해 보는 게 중요합니다.

정확하게 답을 못 내더라도

어떻게 해야 할까 

가볍게라도 생각하고 

답안 참고해 주세요!!

 

 

■ 예시 답안

1은 항상 진약수에 포함되므로

sum을 1로 초기화해 주었습니다.

 

ArrayList <Interger>

int타입으로 설정 변수는 arr

그리고 new를 반드시 해주어야 합니다.

배열의 길이를 지정하지 않고

ArrayList를 import 하여 사용해서

입력하면서 자동으로 증가하도록 하였습니다.

 

ArrayList로 생성한 arr에

요소를 추가해 주기 위해

arr.add( ) ; 를 사용하였습니다.

 

arr.set( )을 이용하면 변경도 가능합니다.

 

만약 지정된 배열에 추가하고 싶다면

arr.add(0, j ) ; 이렇게 해주면 됩니다.

 

그리고

이중 for문을 사용 ( j와 i)

 

바깥 for문은 j를 이용해서 3부터 입력값까지 반복,

 

안쪽 for문 i사용하여 약수합이 완전수인지 판단 후

 

완전수이면 ArrayList로 생성해 둔 배열 arr에 입력합니다.

 

이중 for문이 끝난 후

ArrayList의 arr에 있는 값을

for을 통해 출력하기 위해

또 다른 for문을 작성합니다.

 

 

 

■ 실행 결과

실행 후

10000을 입력

정상적으로 

6 28 496 8128 출력

 

참고로

완전수는 6이나 28로 끝나는 규칙이 있다고 합니다.

반응형

BELATED ARTICLES

more