본문 바로가기

PROGRAMMING/예제

[Java] 솟수를 솟솟, 소수(Prime Number) 구하기.

소수(Prime number, 素數)는 약수가 나 자신과 1밖에 없는 수를 말한다.

→ 2 이상의 숫자부터 자기 자신보다 1 작은 숫자까지 나누면서 나누어 떨어지지 않으면 소수이다.

 

public class Example 
{

	public static void main(String[] args) 
    {		
		boolean isPrimeNumber = true; // 숫자 i가 소수인지 아닌지를 저장할 변수.
		
		for(int i = 2; i < 101; i++) // i는 소수인지 아닌지 판별할 2 ~ 100의 숫자.
		{
			for(int j = 2; j < i - 1; j++) // j는 i를 나누기 위한 2 ~ i - 1의 숫자.
			{
				if(i % j == 0) // i를 j로 나누었을때 나누어 떨어진다면(2 이상의 숫자로 나누었을때 나누어 떨어진다면) i는 소수가 아니다.
				{
					System.out.println("i  = " + i + ", j = " + j); // 현재의 변수 i, j의 값을 출력.
					isPrimeNumber = false; // 이 숫자는 소수가 아니라고 정한다.
					break; // 나머지 숫자로는 나눌 가치도 없으므로 내부 반복을 종료한다.
				}
				else
				{
					isPrimeNumber = true; // 다음 숫자 i를 위해서 소수 판별 변수를 다시 true로 선언.
				}
			}
			
			if(isPrimeNumber == true) // 2부터 i보다 1 작은 숫자로 나눴을 때 나누어 떨어지지 않디? 라고 물어본다.
			{
				System.out.println(i + "은 소수이다."); // 네, 그렇던데요. 라면 i는 소수이다.
			}
			else
			{
				System.out.println(i + "는 소수가 아니다."); // 아니오, 떨어지던데요. 하면 i는 소수가 아니다.
			}
		}
	}
}