Algorithm/문제 풀이 / / 2020. 1. 25. 19:43

[JUNGOL_2809 - JAVA] 약수

반응형

문제

한 개의 정수를 입력받아 입력받은 정수의 약수를 모두 출력하는 프로그램을 작성하시오.

 

입력형식

정수 N이 주어진다. (2 ≤ N ≤ 21억)

 

출력형식

N의 약수를 작은 수부터 차례로 모두 출력한다.

 

 

import java.util.Arrays;
import java.util.Scanner;

public class Main {

	static Scanner sc = new Scanner(System.in);

	public static void main(String[] args) {
		int num = sc.nextInt();
		int sqrt = (int) Math.sqrt(num); // Math클래스를 활용한 제곱근 구하기
		int[] arr = new int[10000]; // 약수를 받기 위한 배열
		int cnt = 0; // 배열의 길이를 위한 선언

		for (int i = 1; i <= sqrt; i++) {
			if (num % i == 0) { // 작은수 저장
				arr[cnt++] = i;
				if (num / i != i) { // 작은수(나누는 수)와 큰수(몫)가 같지 않다면
					arr[cnt++] = num / i; // 큰수(몫) 저장
				}
			}
		}
		//Arrays.sort(data,0,size);를 활용해 0을 제외한 출력문을 만들어도 될 것이라 생각된다.

		int[] arr2 = new int[cnt]; // 기존 약수배열에서 널값을 제외한 값만을 위한 배열 선언

		for (int i = 0; i < cnt; i++) { // 배열의 길이만큼 반복
			arr2[i] = arr[i];
		}

		Arrays.sort(arr2); // array클래스를 활용한 정렬

		for (int i = 0; i < cnt; i++) {
			System.out.print(arr2[i] + " ");
		}
	}

}

 

http://www.jungol.co.kr/bbs/board.php?bo_table=pbank&wr_id=450&sca=2030

 

JUNGOL | 약수 > 문제은행

한 개의 정수를 입력받아 입력받은 정수의 약수를 모두 출력하는 프로그램을 작성하시오. 정수 N이 주어진다. (2 ≤ N ≤ 21억) N의 약수를 작은 수부터 차례로 모두 출력한다.

www.jungol.co.kr

 

반응형
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유