반복문 돌려서 인수 찾아내고 그 수와 그 수로 나눈 수 중 소수인 것들을 찾아서 result 변수에 max값 업데이트하는 단순 코드
#include <cstdio>
#include <cmath>
#include <algorithm>
using namespace std;
const long long N=600851475143;
int main()
{
long long result=0;
for(long long i=2;i<=sqrt(N);i++){
if(N%i==0){
int t=0;
for(long long j=2;j<=sqrt(N/i);j++ ){
if((N/i)%j==0){
t=1;
break;
}
}
if(!t){
result=max(result,N/i);
}
t=0;
for(long long j=2;j<=sqrt(i);j++ ){
if(i%j==0){
t=1;
break;
}
}
if(!t)
result=max(result,i);
}
}
printf("%lld",result);
return 0;
}