[JAVA] 입력값 이하의 모든 완전수 구하기
■ 문제
자연수를 입력받고, 그 자연수 이하의 모든 완전수 출력 하기
완전수란 , 자기 자신을 제외한
약수들의 합이 자기 자신이 되는 수를 말합니다.
예를 들어 완전수로 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로 끝나는 규칙이 있다고 합니다.
'언어 > JAVA' 카테고리의 다른 글
ArrayList 메소드 (0) | 2023.03.22 |
---|---|
[JAVA] 10 ~ 1000 까지 각 숫자 곱의 합 구하기. (0) | 2023.03.21 |
[JAVA] 피보나치 수열에서 짝수인 수의 합 구하기 (0) | 2023.03.19 |
[JAVA] 입력받은 수를 2진법으로 바꾸기 (0) | 2023.03.18 |
[JAVA] 숫자 입력 받으면 자릿수 알려주기 (0) | 2023.03.17 |