문제
한 개의 정수를 입력받아 입력받은 정수의 약수를 모두 출력하는 프로그램을 작성하시오.
입력형식
정수 N이 주어진다. (2 ≤ N ≤ 21억)
출력형식
N의 약수를 작은 수부터 차례로 모두 출력한다.
입력 예
24
출력 예
1 2 3 4 6 8 12 24
코드
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int sq = (int)Math.sqrt(n); // n의 제곱근 저장
int arr[] = new int[10000]; // n의 약수 저장위해
int cnt = 0;
// n의 제곱근까지만 반복문 실행
for(int i=1; i<=sq; i++) {
if(n % i == 0) {
arr[cnt++] = i; // 작은 수 저장 (작은수=큰수 인 경우)
if(n/i != i) { // 작은 수 큰 수 다른 경우
arr[cnt++] = n/i; // 큰 수 저장
}
}
}
// 작은 순으로 약수 저장된 배열 정렬
for(int i=0; i<cnt; i++) {
for(int j=0; j<(cnt-1)-i; j++) {
int temp = 0;
if(arr[j] > arr[j+1]) {
temp = arr[j+1];
arr[j+1] = arr[j];
arr[j] = temp;
}
}
}
// 작은 순으로 약수 출력
for(int i=0; i<cnt; i++) {
System.out.print(arr[i] + " ");
}
}
}
'Algorithm > JUNGOL' 카테고리의 다른 글
[정올] 1002 : 최대공약수, 최소공배수 (0) | 2022.01.20 |
---|---|
[정올] 1658 : 최대공약수와 최소공배수 (0) | 2022.01.20 |
[정올] 1402 : 약수 구하기 (*) (0) | 2022.01.20 |
[정올] 1071 : 약수와 배수 (*) (0) | 2022.01.20 |
[정올] 1430 : 숫자의 개수 (**) (0) | 2022.01.20 |