Q1. 1부터 20까지 각각의 약수와 약수의 갯수는?
ass Study{
public static void main(String[]args){
int i = 0, j = 0, cnt = 0;
for(i = 1; i <= 20; i++){
System.out.println( i + "의 약수는" );
for(j = 1; j <= i; j++) {
if ( i % j == 0) { //i와j의 나머지가 0이 되면 약수니까
System.out.print(j + " ");
cnt++; //약수 1개를 찾을 때 마다 +
}
}
System.out.println("\t" +"약수의 개수는 : " + cnt);
cnt = 0; //약수의 개수 다시 초기화 시켜줘야함
System.out.println();
}
}
}

Q2. 1~50까지 369게임
3 , 6, 9 한번 들어가는데 박수 한번 출력
그 외 숫자는 숫자 출력
class Rock{
public static void main(String[]args){
int i = 0;
for(i = 1; i <= 50; i++){
if( i < 30 || i>= 40){ // i가 1~20, 40~50번대 일때
if ( i % 10 == 3 || i % 10 == 6 || i % 10 == 9){
System.out.print("박수" + " ");
}else {
System.out.print(i + " ");
}
}
if( i / 10 == 3){ // i 가 30번대일때
if(i % 10 == 3 || i % 10 == 6 || i % 10 == 9){
System.out.print("박수박수" + " ");
}else
System.out.print("박수" + " ");
}if( i % 10 == 0){
System.out.println();
}
}
}
}
- 2번 문제는 if(i < 30 || i >= 40) 문장을 꼭 넣어주지 않으면 30번대 문장이 수행되지 않는다 중괄호 속에 묶여있기 때문이다.
30번대는 박수가 다 나와야하기 때문에 if문으로 30번대와 그 외 번호대를 나뉘어주고 그 if 문 안에서 중첩 if 문을 진행한다.