А в чем проблема, оставлять остаток последнему потоку?
elements_per_thread = elements_count / threads_count;
for( i = threads_count ; i-- ; ){
thread[i].count = elements_per_thread;
}
thread[threads_count - 1].count += elements_count % threads_count;