Нет смысла во втором цикле бежать до n. Как минимум можно бежать только до i, а ещё лучше до sqrt(i). И делать не S=S+j;, а S=S+j+i/j;
Это уже значительно ускорит работу программы. А если понять что корень возрастает медленно и не считать его для каждого i, а увеличивать на единицу переменную в которой хранится корень, то...