Как найти самый большой главный фактор 600851475143?
#include <stdio.h>
main()
{
long n=600851475143;
int i,j,flag;
for(i=2;i<=n/2;i++)
{
flag=1;
if(n%i==0)//finds factors backwards
{
for(j=2;j<=(n/i)/2;j++)//checks if factor is prime
{
if((n/i)%j==0)
flag=0;
}
if(flag==1)
{
printf("%d\n",n/i);//displays largest prime factor and exits
exit(0);
}
}
}
}
Код выше работает дляn = 6008514751
, Тем не менее, это не работает дляn = 600851475143
хотя это число все еще находится в диапазонеlong
.
Что я могу сделать, чтобы это работало?