제가 보기에는 코드에 문제가 없어 보이는데 이상하게 돌아갑니다.
아래 함수만 보시면 예를 들어 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;
}
}