문제설명
소인수분해를 하고 그 결과를 출력하는 프로그램입니다.
작동 순서
1. 수를 입력받습니다.
2. factorization 함수에서 크기가 N+1인 배열 arr을 생성해줍니다.
3. factorization 함수에서 입력받은 수를 div로 나눠가며 나눠질때마다 arr[div]에 1을 더해줍니다.
4. num이 1이 되면 반복문을 종료하고 결과를 반환합니다.
5. 반환된 값을 반복문을 통해서 출력해줍니다.
소스코드
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class 소인수분해 {
static int[] factorization(int num){
int[] arr=new int[num+1];
int div=2;
while(num>1){
if(num%div==0){
num/=div;
arr[div]+=1;
}
else
div+=1;
}
return arr;
}
public static void main(String[] args) throws IOException {
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
int N=Integer.parseInt(br.readLine());
int[] arr=factorization(N);
for(int i=2;i<arr.length;i++){
if(arr[i]>0)
System.out.printf("%d^%d ",i,arr[i]);
}
}
}
후기
인터넷을 보니 다들 저랑 다른 방식으로 해놓으셨습니다. 혼자 생각해보고 만들어보는 것도 좋지만 다른 실력 좋은 분들의 코드를 보면서 공부하는 것도 좋은 것 같습니다.