본문 바로가기
Programming/Java

[JAVA] 소수(Prime Number) 구하기

by 공부합시다홍아 2023. 10. 31.
 

반복문을 이용한 별만들기

[JAVA] 제어문 제어문 조건문 / 반복문 / 탈출문 조건문 특정 조건을 만족할 때 실행할 문장을 작성하는데 사용한다. 조건문 if ~ else if문은 프로그램의 흐름을 바꾸는데 사용되는 조건 선택 분기문

hong-study.tistory.com


소수 ( Prime Number ) 구하기
  • 약수가 1과 자기 자신뿐인 자연수
소스코드
import java.util.Scanner;

public class primenumber {

	public static void main(String[] args) {

		Scanner sc = new Scanner(System.in);
		System.out.print("정수를 입력하세요 : ");
		int a = sc.nextInt();
		int c = 0;
		int sum = 0;
		
		for (int i = 2; i <= a; i++) {
			
			for (int j = 2; j <= i; j++) {
				
				if (i % j == 0) {
					
					c++;
				}
			}
			
			if (c == 1) {
				System.out.print(i + " " );
				sum += i;
				
			}
			c = 0;
		}
		System.out.println();
		System.out.println("소수의 합계 : " + sum);

	}

}
설명
a : 소수의 범위를 지정
c : 소수를 확인하는 변수
sum : 소수들의 합을 저장할 변수

첫번째 반복문
소수는 2부터 시작하기 때문에 int i에 2를 시작값으로 저장한다. 

두번째 반복문
변수 j에 시작값으로 2를 저장하고, 부모(i)와 자식(j)의 나눈 값의 나머지가 0으로 떨어질 때
변수 c 를 증가시켜준다. 

소수는 1과 자기자신뿐만 취급하기 때문에 
c가 1일 때의 값만 확인할 수 있는 조건문을 작성한다. 
이후, i ( 소수) 값을 출력하고, sum 변수에 해당 값들을 순차적으로 합한다. 

첫 번째 반복이 끝난이후, 소수를 확인하는 변수인 c를 다시 0으로 초기화해줌으로써 
두 번째 반복시 다시 소수 카운팅을 할 수 있게 작성한다.
결과


소수 구하기 2
소스 코드
import java.util.Scanner;

public class Main {

	public static void main(String[] args) {

		Scanner sc = new Scanner(System.in);
		System.out.print("정수를 입력하세요 : ");
		int num = sc.nextInt();
		int sum = 0;

		for (int i = 2; i <= num; i++) {

			for (int j = 2; j <= i; j++) {

				if (i % j == 0 && i != j) {
					break;
				}

				if (i == j) {
					System.out.print(i + " ");
					sum += i;
				}
			}
		}
		System.out.println("");
		System.out.println("소수의 합 : " + sum);
	}
}
설명
두 번째 반복문의 조건식을 작성할 때까지는 동일하지만,
두 번째 반복문 내의 조건식부터 차이가 있다. 

첫 번째 소스코드에서는 부모 i 와 자식 j 의 나머지값이 0인 경우, 해당 값을 카운팅을 했지만
현재 소스코드에서는 나머지 값이 0이고, i가 j와 다를 때 반복을 중단시키고, 다음으로 넘어간다. 

소수는 1과 나 자신이기 때문에 나머지가 0이고 나 자신과 다른 값이 들어온다면, 해당 값은 올바르지 않으므로
반복을 중단시키게 된다.

두번째 조건식으로 넘어와, 부모와 자식이 동등하다면 즉, 첫 번째 반복의 수와 두 번째 반복하면서
찾은 수가 동일하다면, 그 값을 저장하고 출력하도록 한다. 
728x90

'Programming > Java' 카테고리의 다른 글

[JAVA] 배열 연습  (0) 2023.11.01
[JAVA] 탈출문  (1) 2023.11.01
반복문을 이용한 별만들기  (0) 2023.10.31
[JAVA] 배열  (0) 2023.10.30
[JAVA] 제어문  (0) 2023.10.26