입력된 숫자들 중 가장 큰 소인수를 지닌 숫자를 찾는 문제
조회수 296회
시간복잡도가 큰 코드인 건 아는데
논리적인 오류 부분은 없어보입니다.
그런데 오답이 계속 뜨네요...
이유가 뭘까요??
#include <cstdio>
int a[5001];
int maxv[5001];
int n;
void input(){
scanf("%d",&n);
for(int i = 1;i<=n;i++){
scanf("%d",&a[i]);
}
}
void core(){
int cnt = 0;
for(int i = 1;i<=n;i++){
for(int j = 1; j<=a[i];j++){
if(a[i]%j==0){
// printf("%d ",j);
for(int z=1;z<=j;z++){
if(j%z == 0){
cnt++;
}
}
if(cnt==2){
if(maxv[i] < j){
maxv[i] = j;
}
}
cnt = 0;
}
}
}
}
void output(){
int max = 0;
int idx;
for(int i = 1;i<=n;i++){
if(max < maxv[i]){
max = maxv[i];
idx = i;
}
}
printf("%d",a[idx]);
}
int main(void){
input();
core();
output();
}
댓글 입력