약수 구하기
- 1 ~ 100까지의 수 중에 100의 약수면 “약수”, 아니면 “아님”이라고 출력하시오.
문제 분석
- 약수는 특정한 수를 나눌 수 있는 수이므로, 나눈 나머지가 0
- 1 ~ 100까지 찾아야 하므로 반복문 필요
1. Sampling & Hard Coding 1
- 1 ~ 4까지의 경우만 분석
package algo;
public class Divisor {
public static void main(String[] args) {
// 1 ~ 100의 수 중 100의 약수는 "약수", 아니면 "아님"이라고 출력하시오.
// Sampling : 1 ~ 4까지 수 중 4의 약수는 "약수"라고, 아니면 "아님"이라고 출력하기
// 1. 1은 약수입니다.
System.out.println("1은 약수입니다.");
// 2. 2는 약수입니다.
System.out.println("2는 약수입니다.");
// 3. 3은 약수가 아닙니다.
System.out.println("3은 약수가 아닙니다.");
// 4. 4는 약수입니다.
System.out.println("4는 약수입니다.");
}
}
코드 분석
- 1, 2, 3, 4를 변수 a로 치환 → a를 1씩 증가시키면서 비교
- “입니다” 또는 “가 아닙니다”가 반복 → 반복문 내에 문자열 삽입
2. Sampling & Hard Coding 2
package algo;
public class Divisor {
public static void main(String[] args) {
// 1 ~ 100의 수 중 100의 약수는 "약수", 아니면 "아님"이라고 출력하시오.
// Sampling : 1 ~ 4까지 수 중 4의 약수는 "약수"라고, 아니면 "아님"이라고 출력하기
int a = 0;
// 1. 1은 약수입니다.
a++;
System.out.println(a+"은 약수입니다.");
// 2. 2는 약수입니다.
a++;
System.out.println(a+"은 약수입니다.");
// 3. 3은 약수가 아닙니다.
a++;
System.out.println(a+"은 약수가 아닙니다.");
// 4. 4는 약수입니다.
a++;
System.out.println(a+"은 약수입니다.");
}
}
코드 분석 2
- a++; sout(~~~)의 형태가 반복 → 반복문에 삽입
- 약수일 경우는 “입니다.”, 아닐 경우는 “가 아닙니다.”의 조건 확인
- 삼항연산자 활용 가능
3. Moduling
package algo;
public class Divisor {
public static void main(String[] args) {
// 1 ~ 100의 수 중 100의 약수는 "약수", 아니면 "아님"이라고 출력하시오.
// Sampling : 1 ~ 4까지 수 중 4의 약수는 "약수"라고, 아니면 "아님"이라고 출력하기
int a = 0;
String s = "";
for (int i = 0; i < 4; i++) {
a++;
s = 4 % a == 0 ? "입니다." : "가 아닙니다.";
System.out.println(a + "은 약수" + s);
}
}
}
코드 분석 3
- 반복문을 통해 공통된 부분 압축
- String s를 추가하여 약수일 때만 약수임을 출력하도록 삼항연산자를 이용한 조건 사용
- 최대 범위 4를 변수로 활용 가능 → 추가 변수 선언
- 범위는 선언 후 바뀌지 않아야 하므로 상수 (final int) 선언도 가능
4. Sampling 완성
package algo;
public class Divisor {
public static void main(String[] args) {
// 1 ~ 100의 수 중 100의 약수는 "약수", 아니면 "아님"이라고 출력하시오.
// Sampling : 1 ~ 4까지 수 중 4의 약수는 "약수"라고, 아니면 "아님"이라고 출력하기
int a = 0;
final int N = 4;
String s = "";
for (int i = 0; i < N; i++) {
a++;
s = N % a == 0 ? "입니다." : "가 아닙니다.";
System.out.println(a + "은 약수" + s);
}
}
}
결과

5. 문제 코드 작성
- 범위를 100으로 확장
package algo;
public class Divisor {
public static void main(String[] args) {
// 1 ~ 100의 수 중 100의 약수는 "약수", 아니면 "아님"이라고 출력하시오.
int a = 0;
final int N = 100;
String s = "";
for (int i = 0; i < N; i++) {
a++;
s = N % a == 0 ? "입니다." : "가 아닙니다.";
System.out.println(a + "은 약수" + s);
}
}
}
결과

Share article