Подсчет количества цифр – какой метод наиболее эффективен?

Существует более одного решения для нахождения количества цифр в заданном числе.

Например:

Метод-1:

int findn(int num)
{
    char snum[100];
    sprintf(snum, "%d", num);
    return strlen(snum);
}

Метод-2:

int findn(int num)
{
    if (num == 0) return 1;
    int n = 0;
    while(num) {
        num /= 10;
        n++;
    }
    return n;
}

Метод-3:

int findn(int num)
{
    /* math.h included */
    return (int) log10(num) + 1;
}

Вопрос в том, какой самый эффективный метод? Я знаю, что метод-2 O(n), но как насчет метода-1 и метода-3? найти сложность библиотечных функций во время выполнения?

21
задан Kubuntuer82 5 July 2018 в 11:43
поделиться