попробовать:
for(int i=1; i < (n/2); ++i)
if (n%i==0)
printf("%d\n",i);
как насчет этой оптимизации (вам нужно только до квадратного корня):
for(int i=1; i < sqrt(n); ++i)
if (n%i==0)
printf("%d\n",i);
Или этот, вы покрываете только нечетные числа (полезно, если вы проверяете простые числа):
for(int i=1; i < sqrt(n); i+=2)
if (n%i==0)
printf("%d\n",i);