반응형
문제
한 개의 정수를 입력받아 입력받은 정수의 약수를 모두 출력하는 프로그램을 작성하시오.
입력형식
정수 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
반응형
'Algorithm > 문제 풀이' 카테고리의 다른 글
[JUNGOL_2604 - JAVA] 그릇 (0) | 2020.01.25 |
---|---|
[JUNGOL_2813 - JAVA] 소수의 개수 (0) | 2020.01.25 |
[JUNGOL_1337 - JAVA] 달팽이삼각형 (0) | 2020.01.25 |
[JUNGOL_1307 - JAVA] 문자사각형1 (0) | 2020.01.25 |
[JUNGOL_1303 - JAVA] 숫자사각형1 (0) | 2020.01.25 |