★ 이번주 목표 : 한글 코딩 익숙해지기 ★
문제 풀이 할 때마다 한글 코딩 먼저 해보고 한글 코딩에 맞춰서 코드 작성하기!!
확실히 한글로 먼저 작성한 뒤 코드로 작성하는 것이 로직 구현하기가 수월하다
[4] 완전수란, 약수를 모두 더했을 때 자기 자신이 되는 수를 말한다. (6= 1+2+3=6)
랜덤정수 (0-1000 사이에서 결정)가 완전수라면 "완전수입니다."
완전수가 아니라면 "완전수가 아닙니다"를 출력해주세요
완전수 : 자기 자신의 약수를 모두 더하면 자기 자신이 된다.
1. 약수를 구하고 2. 약수를 모두 더했을 때 그 수와 동일하면 3. 그것이 완전수
int num = 496; // 랜덤으로 주어질 랜덤 정수(0-1000 사이)
int total = 0; // 약수들의 합을 저장할 변수
for(int i = 1; i < num; i++) { // 자기자신 빼야하니까 <= 안됨!
if(num % i == 0) { // 랜덤 정수를 i로 나누었을 때 0이 되면 약수
total += i; // 약수라면 total에 더함
}
}
if(total == num) { // 만약 total의 값과 랜덤 정수가 같다면 (완전수라면)
System.out.println("완전수입니다.");
} else {
System.out.println("완전수가 아닙니다.");
}
}}
int i = 2; 설정했더니 결과가 이상하게 나와서 뭔가 했더니 완전수는 자기자신을 제외한 자신의 약수들을 모두 더한 값이고
그 약수에는 1도 포함되기 때문에 int i 를 1부터 돌도록 설정해주어야 한다.. ㅎㅎ
이런 실수를..

[5] 1부터 1000까지의 정수들중에서 완전수들을 출력해주세요.
int i;
for(i = 1; i <= 1000; i++) {
int total = 0;
for(int j = 1; j < i; j++) {
if(i % j == 0) { // 나머지가 0이라면 (약수라면)
total += j; // total에 더한다
}
}
if(total == i) {
System.out.println(i + "는 완전수입니다.");
}
}
total을 for문 안에서 초기화해줘야 결과가 나오는데 for문 외부에서 초기화를 해버려서 결과가 나오지 않았다...
반복문 내에서 계속 초기화 되면서 합을 저장해야 하는데, 외부에 선언하면 이전 합까지 같이 합쳐지기 때문에 for문 내부에서 total 변수를 초기화해주어야 한다!
'IT > JAVA' 카테고리의 다른 글
Day 5 - 배열 문제 풀이 (0) | 2025.01.02 |
---|---|
CodeUp - 1228 : 비만도 측정 1 (0) | 2025.01.01 |
[JAVA] 정수 2개를 입력받고 랜덤수 3개 출력하기 (0) | 2024.12.31 |
반복문 별 찍기 (0) | 2024.12.31 |
Day3 - for문/ 변수의 유효범위(scope) (0) | 2024.12.30 |