Разные люди будут давать вам разные ответы в зависимости от того, что они предполагают и что они учитывают в проблеме.
Это O (n), если предположить, что операции равенства и остатка, которые вы выполняете внутри каждого цикла, равны O (1).Это правда, что процессор делает это в O (1), но это работает только для чисел с фиксированной точностью.Поскольку речь идет об асимптотической сложности, а поскольку «асимптотика», по определению, имеет дело с тем, что происходит, когда вещи растут без ограничений, нам необходимо рассмотреть числа, которые являются сколь угодно большими.(Если бы числа в вашей задаче были ограничены, то время выполнения алгоритма также было бы ограничено, и, таким образом, весь алгоритм был бы технически O (1), очевидно, не то, что вы хотите.)
Для произвольного-точные числа, я бы сказал, что равенство и остаток в общем случае требуют времени, пропорционального размеру числа, которое является log n.(Если вы не можете оптимизировать это в амортизированном анализе каким-либо образом) Итак, если мы рассмотрим это, алгоритм будет O (n log n).Кто-то может считать это придирчивым