Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

Everything has an expiration date

050 - ★ Java 반복문 while을 이용하여 사용자가 입력한 정수 값이 소수인지 아닌 지를 판별하는 프로그램 본문

[Java]/Program source (java)

050 - ★ Java 반복문 while을 이용하여 사용자가 입력한 정수 값이 소수인지 아닌 지를 판별하는 프로그램

Jelly-fish 2023. 8. 31. 12:25
/*=========================================
	■■■ 실행 흐름의 컨트롤(제어문) ■■■
	- 반복문(while문) 실습 및 관찰
===========================================*/

// ※ 소수 : 1 또는 자기 자신의 값 이외에 어떤 수로도
//			 나누어 떨어지지 않는 수.
//			 단, 1은 소수 아님.

// 사용자로부터 임의의 정수를 입력받아
// 입력받은 정수가 소수인지... 아닌지... 를 판별하여
// 결과를 출력하는 프로그램을 구현한다.

// 실행 예)
// 임의의 정수 입력 : 10
// 10 → 소수 아님

// 임의의 정수 입력 : 11
// 11 → 소수
// 계속하려면 아무 키나 누르세요...


import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;


public class Test050
{
	public static void main(String[] args) throws IOException
	{
		// 주요 변수 선언
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

		int num;			//-- 사용자의 입력값을 담아낼 변수
		int n = 2;			//-- 입력값을 대상으로 나눗셈 연산을 수행할 변수
							//	 2 부터 시작해서 1씩 증가
							//	 ex) 입력값 27 → n : 2 3 4 5 6 7 8 ... 23 24 25 26


		// 연산 및 처리
		System.out.print("임의의 정수 입력 : ");
		num = Integer.parseInt(br.readLine());

		// 어떤 값을 입력받은 상태인지 알 수 없지만
		// 이 입력값을 소수로 간주한다.
		//String result = "소수다";
		boolean flag = true;				//-- num(사용자 입력값)은 소수일 것이다~!!!

		while (n < num)
		{
			// 테스트
			//System.out.println("반복문 수행 → n : " + n);
			

			// 확인 연산
			//-- n 으로 num 을 나누어 떨어지는지 확인 → 나머지가 0 인지 확인
			if (num % n == 0)		// 즉, 나누어 떨어지는 상황
			{
				// 앗~! 난 너를 소수라 생각했는데... ㅠㅠ
				// 넌... 소수가 아니었어 흑흑흑...   ㅠㅠ
				flag = false;
				break;				// 멈춘다. ( + 그리고 빠져나간다.)
									// → break 를 감싸는 가장 가까운 반복문
			}


			n++;
		}
		

		// 테스트
		//System.out.println("flag : " + flag);


		// 결과 출력
		// (최종 결과를 출력하기 전에 추가 확인 → 1인지 아닌지에 대한 추가 검토)
		if (flag && num != 1)	//flag 자체가 true 이므로 flag == true → flag
		{
			// 최종적으로 넌 소수
			System.out.printf("%d → 소수\n", num);
		}

		else
		{
			// 최종적으로 넌 소수 아님
			System.out.printf("%d → 소수 아님\n", num);
		}




	}
}


// 실행 결과

/*
임의의 정수 입력 : 990
990 → 소수 아님
계속하려면 아무 키나 누르십시오 . . .
*/

/*
임의의 정수 입력 : 991
991 → 소수
계속하려면 아무 키나 누르십시오 . . .
*/

/*
임의의 정수 입력 : 1
1 → 소수 아님
계속하려면 아무 키나 누르십시오 . . .
*/



/*[내가 한 풀이]=======================================================
public class Test050
{
	public static void main(String[] args) throws IOException
	{

		

		// 1. 변수 선언
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		int nInputNum;					//-- 입력받은 수 
		int nMinusInputNum;	//-- 입력받은 수보다 1 작은 수
		int nRemainNum;					//-- 나머지값 저장
		int i = 2;							//-- 루프 변수
		String strResult="";				//-- 결과 문자열

		// 2. 사용자로부터 입력 받고, nMinusInputNum에 -1 값 저장.
		System.out.print("임의의 정수 입력 : ");
		nInputNum = Integer.parseInt(br.readLine());

		nMinusInputNum = nInputNum - 1;

		// 3. 연산 수행
		//	while (int i = 2 ~ 입력 받은 수)
		//	{
		//		나머지 값 = 입력받은 수 % 입력받은 수보다 1 작은 수;
		//		
		//		if (나머지 값 == 0)
		//		{
		//			나누어 떨어지는 수 있음! → 소수 아님
		//		}

		//		else if (나머지 값 != 0)
		//		{
		//			[ 1이 아니니? ] 한번 더 물어보고
		//					▶ true  : 소수
		//					▶ false : 소수 아님 (1이다!)
		//		}
		//
		//	}


		while (i < nInputNum)	// 루프변수 i = 2 ~ 입력받은 수;
		{
			
			nRemainNum = nInputNum % i;
			
			System.out.println(" i : " + i);

			if (nRemainNum == 0) // 나누어 떨어진다.
			{	

				System.out.printf("『if문 들어왔습니다.』      ▶ i값 : %d로 나누어 떨어집니다.\n", i);
				System.out.println("● 나머지 값 : " + nRemainNum);
				System.out.println("소수 아님");
				return;
				
			}
			else if (nRemainNum != 0) // 나누어 떨어지지 않는다.
			{	
				System.out.printf("『else if문 들어왔습니다.』  ▶ i값 : %d로 나누어 떨어지지 않습니다.\n", i);
				System.out.println("● 나머지 값 : " + nRemainNum);
										
				strResult = "소수";

				// ★☆★☆★☆ 입력받은 값이 1인지 아닌지 확인하는 과정을 더 거쳐야 함... ★☆★☆★☆
				if (입력받은 값 nInputNum == 1이 아닌가?)
				{
					소수다.
				}
				else 
				{
					소수 아니다. (입력 값이 1이다)
				}

			}

			i++;

		}

		System.out.printf("%d → %s\n", nInputNum, strResult);
		

		// 4. 결과 출력
		// 임의의 정수 입력 : 11
		// 11 → 소수
		// 계속하려면 아무 키나 누르세요...