📝소수 판별
조건
👉 사용자로부터 입력 받은 정수가 소수인지 판별하는 프로그램
👉 소수: 1과 자기 자신으로 나눴을때 0 이 나오는 수
👉 단, 입력받은 수가 2보다 작을 경우 " 잘못 입력하셨습니다." 출력
출력 화면)
입력 : 5
소수입니다.
입력 : 1
잘못 입력하셨습니다.
⭕ 풀이 코드
Scanner sc = new Scanner(System.in);
System.out.print("입력 : ");
int input = sc.nextInt();
if(input < 2) {
System.out.println("잘못 입력하셨습니다.");
} else {
boolean flag = true; //소수 판별용 변수
for(int i = 2; i < input; i++ ) { //모든 수는 1은 나눠지니깐 2 ; 자기자신도 포함하면 x;
// 반복문에서 i가 하는 역할: 입력된 값을 나누는 역할
// -> i로 나눴을 때 나머지가 0이 나옴
// == 1과 자기 자신을 제외한 수로 나눌 수 있다 == 소수가 아니다
if(input % i == 0) { // 나누어 떨어짐 == 소수가 아니다
flag = false; //소수가 아니라고 저장
break;
// 한 번이라도 나누어 떨어진 경우
// 소수가 아닌 것을 알 수 있으므로
// 남은 수로 나누는 수고를 할 필요 없이 반복을 종료
}//if
}//for
// for문이 끝났지만 한번도 if문이 수행 되지 않았다 == 소수
// for문이 끝나고 나서
if(flag) { //flag가 true라면 == 소수인 경우
System.out.println("소수 입니다.");
} else { // flag가 false라면 == 소수가 아닌 경우
System.out.println("소수가 아닙니다.");
}
}//if 바깥
🔎 think
- 소수 : 1보다 큰 자연수 중 1과 자기 자신만을 약수로 가지는 수
- 소수 판별 하는 법 : 자기보다 작은수를 반복하고 그 수와 나누기했을 때 나머지 0
➡ For 반복문으로 자기보다 작은 수들을 반복하고
➡ if문으로 입력된 값과 i(2~입력된 값 -1 의 수들) 나눠보기
추가 조건
👉 잘못 입력한 경우 프로그램을 종료하는 것이 아닌 다시 입력을 받을 수 있게 구현하기
출력 화면)
정상으로 입력 할 경우 프로그램이 종료
맞는 답안이 나올 때까지 계속 입력 받는다.
Scanner sc = new Scanner(System.in);
while(true) { //정답이 나올 때 까지 멈추면 안되니깐 while
System.out.print("입력 : ");
int input = sc.nextInt();
if(input < 2) {
System.out.println("잘못 입력하셨습니다.");
} else {
boolean flag = true;
for(int i =2; i<input; i++) {
if (input % i == 0) { //소수가 아니라면
flag = false;
break;
}//if
}//for
if(flag) {
System.out.println("소수 입니다.");
} else {
System.out.println("소수가 아닙니다.");
}
//내부에서 실행된 후 바깥쪽 while문을 멈춰야한다.
break;
}
}
🔎 think
한 번이라도 나누어 떨어진 경우 소수가 아닌 것을 알 수 있으므로
남은 수로 나누는 수고를 할 필요 없이 반복을 종료한다. => break;
➡ 앞서 작성한 코드에 정답이 나올 때까지 반복되게 while문 추가
➡ 소수가 맞다는 결과를 출력하고 break; => 가장 가까이 있는 반복문을 멈추게 하기때문에 while문이 종료된다.
break;
수가 커질 경우 앞에서 한번만 나뉘어져도 == 0이된다면 break;를 추가해준다.
=> break;는 가장 가까운 반복문에 영향을 주기 때문에 2부터 input까지 반복하는 반복문에 영향을 준다.
package edu.kh.control.branch.ex.service;
public void example8_teach
반응형
'Backend > 문제 풀이' 카테고리의 다른 글
[Java] Polymorphism(다형성)_예제 (0) | 2021.09.11 |
---|---|
[Java] Inheritance(상속) 예제 (0) | 2021.09.08 |
[Java|연습] 2차원 Array(배열)_기초 문제 행,열 합 (0) | 2021.09.02 |
[Java|연습] Array(배열)_lotto(Math.random()) (0) | 2021.09.02 |
[Java|연습] Array(배열)_초기화 (0) | 2021.09.02 |