자바/자바 코드 예제 만들기

자바 기초 예제 문제 2. 자바로 소수값 출력하기

Tomitom 2022. 10. 26. 17:44
반응형

 

메인 메소드와 일반 메소드를 활용해서 소수값(prime)을 출력하는 프로그램을 만들어볼게요. 

 

전달된 값이 소수인지 아닌지를 판단해서 소수의 경우 true 를, 

소수가 아닌 경우에는 false를 반환하는 메소드를 정의하고 

이 메소드의 호출결과를 기반으로 1 이상 100 이하의 소수를 전부 출력하는 main 메소드를 만듭니다. 

 

우선 소수를 구하기 위해 pirme소수의 정의에 대해서 알아볼게요.

소수란 1보다 큰 자연수 중 1과 자기 자신만을 약수로 가지는 수 입니다.

즉, 나머지가 0이 되는 것은 1과 자기 자신의 수 밖에 없습니다. 

이것을 코드로 구현해볼게요. 

 

package day13;


/* 
 * 전달된 값이 소수(Prime)인지 아닌지를 판단하여 소수인 경우 true 를,
 * 소수가 아닌 경우 false를 반환하는 메소드를 정의하고, 
 * 이 메소드의 호출결과를 기반으로 1 이상 100 이하의 소수를 전부 출력하는 
 * main 메소드를 완성해본다.
 */



public class Quiz01 {

	public static void main(String[] args) {
		
		for(int i=1; i <= 100 ; i++) {
			if(checkPrime(i)){
				System.out.println(i);							
				}
			}
	
		}
	
		
	public static boolean checkPrime(int number) {
		boolean prime = false;
		
		for(int i = 2; i <= number; i++ ) {
			if(number == i){
				prime = true;
				break;
			}
			if(number % i == 0) {
				prime = false;
				break;
			}	else {
				prime = true;
			}
			}
		
		return prime;
		}
	}

 

결과 화면...

 

 

 

<main 메소드 코드 블록> 

    public static void main(String[] args) {    // main 메소드를 생성합니다. 
       
        for(int i=1; i <= 100 ; i++) {
 
 
 
 
// 반복문을 사용해서 구해줄 거예요. 우선 i는 1부터 100 이하의 값을 구해야 하기 때문에 정수의 값 1부터 시작합니다.
그리고보다 작거나 같을 때까지 반복하도록 조건을 걸어주고, 
반복문의 출력이 끝나고 나면 i의 값을 1씩 더해줍니다. 
 
 
 
            if(checkPrime(i)){
                System.out.println(i);                          
                }
            }
   
        }
   
 
 
// i가 반복할 때마다 반복되는 구문입니다. if 조건문으로 checkPrime(  ) 메소드를 사용할 거예요. 
checkPrime 메소드는 소수가 맞는지 아닌지 판단하여 결과값을 반환해주는 메소드예요. 
( 아래에 있는 것이 확인하기 번거롭다면 main 메소드를 아래에 넣고 일반 메소드를 위에 기재하여도 무관합니다. )
checkPrime 의 메소드에 반복되는 i의 값을 넣어주고, 그것을 출력해줍니다. 
   
 
 
 
<boolean 일반 메소드 블록>
 
    public static boolean checkPrime(int number) {
 
        boolean prime = false; 
 
 
 
// 반환된 값이 소수가 맞는지 아닌지를 확인해야하기 때문에 우선 boolean prime 의 값을 false로 지정해줍니다.
이후에 true 의 값이 나오면 prime 의 값을 true 로 바꿔줄 거예요. 
우선 정수 number 의 값을 받습니다. 여기서 정수 number의 값은 외부 반복문인 main의 i 값이에요. (1부터 100까지 반복하는 값) 
       
 
        for(int i = 2; i <= number; i++ ) {
     
< for구문 안에 if 조건문 두 개 삽입> 
 
      if(number == i){
                prime = true;
                break;
            }
 
// 반복문을 삽입합니다. 1보다 큰 자연수는 2부터 나누기 시작하기 때문에 이 반복문에서 i 의 초기값은 정수 2를 줍니다.
그리고 초기값인 i가 자신과 같아질 때까지 나누기를 반복하도록 반복을 설정해줍니다. 
이렇게 작성하면 처음에 checkPrime의 number 에 값이 5가 주어지면 
1/5 ... 2/5 ... 3/5 ... 4/5 ... 5/5 ...까지 계산을 한 후에 
5의 값에 ++ 1을 추가하여 다시 외부 반복문으로 돌아갑니다. 
 
 
            if(number % i == 0) {
                prime = false;
                break;
 
            }   else {
                prime = true;
            }
            }
       
        return prime;
        }
   
 
반응형