Это очень неоптимальная функция. Напомните на семинаре рассказать, в чем здесь проблемы.