Algorithm/정올 알고리즘
정올_2809 약수(자바) / 수학1
미스터로즈
2021. 6. 25. 14:54
시간&메모리 제한

문제

입력& 출력


문제풀이
package com.jungol;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
public class jungol_2809 {
public static void main(String[] args) throws NumberFormatException, IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
int[] arr= new int[10000];
int cnt = 0;
int N = Integer.parseInt(br.readLine());
int M = (int)Math.sqrt(N);
for (int i = 1; i <= M; i++) {
if(N%i==0) {
arr[cnt++]=i;
//25일때 5가 두개 들어가는 것을 방지
if(N/i !=i) {
arr[cnt++] = (int)N/i;
}
}
}
Arrays.sort(arr);
for (int i = 0; i < arr.length; i++) {
if(arr[i]==0)continue;
System.out.print(arr[i]+" ");
}
}
}
- 이 문제는 약수를 구하는 문제입니다.
- 약수는 어떤 값으로 나눴을 때 나머지가 0이 되는 것을 찾는 것입니다.
- 약수를 효율적으로 구하는 방법은 sqrt()를 이용하여 제곱수를 이용하는 방법입니다.