Ну, есть большая ветвь теоретической информатики - теория сложности - посвященная именно такой проблеме. Общая проблема (принятия решения о том, завершится ли код для произвольного ввода), у вас здесь состоит в том, что называется «NP-полная» и поэтому очень трудна.
Но в этом случае у вас, вероятно, есть два варианта.
Первое - использовать грубую силу. Запустите timeit для isprime (a) для a=1, 2, 3, 4, ...
, постройте график времени и попытайтесь выяснить, не выглядит ли это как-то очевидным: a^2
, a log a
, что угодно.
Правильный, но более сложный ответ - проанализировать свой алгоритм и посмотреть, сможете ли вы определить, сколько операций требуется для «типичного случая».