코드 어디에 문제가 있는 걸까요

2j1ejyu Reply 5 years 50 weeks ago
제가 보기에는 코드에 문제가 없어 보이는데 이상하게 돌아갑니다. 아래 함수만 보시면 예를 들어 10을 입력할 때 while문에서 잘 돌아가다가 ans = 1, n= 5, divide= 5, k= 2, count= 1, first =1일 때 while문을 한 번 더 돌게 되면 ans=2, n=1, divide = 5, k=5, count = 1 이 되었어야 하는데 ans= 1, n= 10 ,divide =2, k= 1, count =0, first =0 로 즉, 반복문을 시작할 때의 상태로 돌아갑니다. 왜이러는건가요? import java.util.ArrayList; import java.util.Calendar; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner input = new Scanner(System.in); int T = input.nextInt(); int nums[] = new int[T]; for(int i=0; i<T; i++){ nums[i] = input.nextInt(); } for(int i=0; i<T; i++){ System.out.printf("%d = %d x %d",nums[i]*min_num(nums[i]),nums[i],min_num(nums[i])); if(i<T-1) System.out.println(); } } public static int min_num(int n){ int divide = 2; int k = 1; int count = 0; int ans = 1; int first= 0; while(divide<=n){ if(n%divide==0){ if(first==0){ k=divide; n/=divide; count++; first++; } else if(divide==k){ count++; n/=divide; }else{ if(count%2==1){ ans *= k; } k = divide; count = 1; n/=divide; } }else divide++; } if(count%2==1) ans *= k; return k; } }
Hyunwoo Reply 5 years 49 weeks ago
해결 하신 건가요? Accepted 되었네요.
2j1ejyu Reply 5 years 49 weeks ago
넵 ㅎㅎ