자바 for 문 소수 판별 - jaba for mun sosu panbyeol

package array_exam2;

import java.util.Arrays;

import java.util.Scanner;

public class array_exam3 {

public static void main(String[] args) {

Scanner sc = new Scanner (System.in);        

/* 

         * 5개의 요소를 가진 배열 (자연수 범위 )

         * 소수 -> O , X 

         * 소수면 O , 아니면 X

         * [ 2 3 4 5 6 ]

         * [ O O X O X ]

         */

System.out.println("5개 요소를 입력하세요 : ");

int [] arr = new int [5];

for (int i = 0; i < 5; i++ ) {

arr[i] = sc.nextInt(); 

}

System.out.println("배열 입력 완료 ");

System.out.println(Arrays.toString(arr));

for (int a = 0; a < 5 ; a++ ) {

int cnt = 0;

for (int i = 1; i < arr[a]; i++ ) {

if(arr[a] % i == 0 ) {

cnt++// 나머지가 0이면 소수가 아니다.

}

if ( cnt == 1 ) { // 소수는 1과 자기 자신만 나눌 수 있다. 

System.out.print(" O "); // 그러므로 o 

else {

System.out.print(" X ");

}

}

}

}

투케이2K

Java

19. (java/자바) 알고리즘 : 소수구하기 - 이중 for문을 사용해 1부터 10까지 소수구하기

투케이2K 2020. 12. 28. 18:23

/* =========================== */

[ 개발 환경 설정 ]

개발 툴 : Eclipse

개발 언어 : Java

자바 for 문 소수 판별 - jaba for mun sosu panbyeol

/* =========================== */

/* =========================== */

[소스 코드]

package Al;

import java.util.ArrayList;

public class MainActivity5 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		System.out.println("[소수 구하기 - 이중 for문을 사용해 1부터 10까지 소수구하기]");
		
		//소수값을 담기위한 배열 선언
		ArrayList list = new ArrayList();
		
		//소수여부를 확인하기 위해 변수선언
		int check = 0;
		
		/*[설 명]
		 * 1. 소수란 ? 약수가 1과 자기 자신 뿐인 1보다 큰 자연수이다
		 * 2. 소수는 2부터 시작을한다
		 * 3. 부모 for문 i값 변수에 구하려는 소수 범위값을 지정한다
		 * 4. 자식 for문 k값을 사용해 부모i값과 나누기를 수행 후 정상적으로 
		 *    0값으로 나누어 떨어질 경우 check 값을 증가시킨다 
		 * 5. 소수는 1과 자기 자신만 나누어떨어져야하므로 부모 for문에서 나누어 떨어진 횟수가 1일 경우 소수로 판단한다   
		 */		
		for(int i=2; i<=10; i++) { //부모 for문
			for(int k=2; k<=i; k++) { //자식 for문
				if(i%k == 0) { //나누기 몫이 0이면 check 값을 증가시킨다
					check ++;
				}
			}//자식 for문 종료
			
			if(check == 1) { //소수는 1과 자기 자신만 나누어떨어져야하므로 나누어 떨어진 횟수가 1일 경우 소수로 판단
				list.add(i);
				check = 0; //변수 재정의 실시 (다시 부모 for문 반복수행 위함)
			}
			else {
				check = 0; //변수 재정의 실시 (다시 부모 for문 반복수행 위함)
			}
		}//부모 for문 종료
		
		System.out.println("1부터 10까지 소수 : "+list.toString());

	}//메인 종료

}//클래스 종료

/* =========================== */

[결과 출력]

[소수 구하기 - 이중 for문을 사용해 1부터 10까지 소수구하기]

1부터 10까지 소수 : [2, 3, 5, 7]

/* =========================== */

/* =========================== */

[요약 설명]

* 1. 소수란 ? 약수가 1과 자기 자신 뿐인 1보다 큰 자연수이다

* 2. 소수는 2부터 시작을한다

* 3. 부모 for문 i값 변수에 구하려는 소수 범위값을 지정한다

* 4. 자식 for문 k값을 사용해 부모i값과 나누기를 수행 후 정상적으로

     0값으로 나누어 떨어질 경우 check 값을 증가시킨다

* 5. 소수는 1과 자기 자신만 나누어떨어져야하므로 부모 for문에서 나누어 떨어진 횟수가 1일 경우 소수로 판단한다

/* =========================== */