Гид по технологиям

Найти наибольшую и наименьшую цифру числа — примеры на Python, C++, JavaScript, C и Java

4 min read Алгоритмы Обновлено 05 Jan 2026
Наибольшая и наименьшая цифра числа — примеры
Наибольшая и наименьшая цифра числа — примеры

Сетка цифр, начерченная мелом на земле

Хотя для программиста не обязательно быть профессором математики, умение быстро анализировать цифры и переменные — полезный навык. Задачи на работу с цифрами часто встречаются на собеседованиях и тестах. В этой статье разберём, как найти наибольшую и наименьшую цифру числа на Python, C++, JavaScript, C и Java, а также рассмотрим альтернативные подходы и наборы тестов.

Условие задачи

Дано число num. Нужно найти и вывести наибольшую и наименьшую цифру числа num.

Примеры:

  • Пример 1: num = 238627

    Наибольшая цифра: 8

    Наименьшая цифра: 2

  • Пример 2: num = 34552

    Наибольшая цифра: 5

    Наименьшая цифра: 2

  • Пример 3: num = 123

    Наибольшая цифра: 3

    Наименьшая цифра: 1

C++ — программа для поиска наибольшей и наименьшей цифры

Ниже — исходный код на C++. Комментарии и логика сохранены.

// C++ program to find the largest and smallest  
// digit of a number  
#include   
using namespace std;  
  
void findLargestSmallest(int num)  
{  
    int largestDigit = 0;  
    int smallestDigit = 9;  
    int digit;  
    while(num)  
    {  
        digit = num%10;  
        // Finding the largest digit  
        largestDigit = max(digit, largestDigit);  
  
        // Find the smallest digit  
        smallestDigit = min(digit, smallestDigit);  
        num = num/10;  
    }  
    cout << "Largest Digit: " << largestDigit << endl;  
    cout << "Smallest Digit: " << smallestDigit << endl;  
}  
  
// Driver Code  
int main()  
{  
    int num1 = 238627;  
    cout << "num1: " << num1 << endl;  
    findLargestSmallest(num1);  
  
    int num2 = 34552;  
    cout << "num2: " << num2 << endl;  
    findLargestSmallest(num2);  
  
    int num3 = 123;  
    cout << "num3: " << num3 << endl;  
    findLargestSmallest(num3);  
  
    int num4 = 45672;  
    cout << "num4: " << num4 << endl;  
    findLargestSmallest(num4);  
  
    int num5 = 76567;  
    cout << "num5: " << num5 << endl;  
    findLargestSmallest(num5);  
  
    return 0;  
}

Вывод (пример):

num1: 238627  
Largest Digit: 8  
Smallest Digit: 2  
num2: 34552  
Largest Digit: 5  
Smallest Digit: 2  
num3: 123  
Largest Digit: 3  
Smallest Digit: 1  
num4: 45672  
Largest Digit: 7  
Smallest Digit: 2  
num5: 76567  
Largest Digit: 7  
Smallest Digit: 5

Python — программа для поиска наибольшей и наименьшей цифры

Классический вариант с арифметикой, без преобразования в строку.

# Python program to find the largest and smallest  
# digit of a number  
  
def findLargestSmallest(num):  
    largestDigit = 0  
    smallestDigit = 9  
  
    while (num):  
        digit = num % 10  
  
        # Finding the largest digit  
        largestDigit = max(digit, largestDigit)  
  
        # Finding the smallest digit  
        smallestDigit = min(digit, smallestDigit)  
  
        num = num // 10  
    print("Largest Digit:", largestDigit)  
    print("Smallest Digit:", smallestDigit)  
  
# Driver Code  
num1 = 238627  
print("num1:", num1)  
findLargestSmallest(num1)  
  
num2 = 34552  
print("num2:", num2)  
findLargestSmallest(num2)  
  
num3 = 123  
print("num3:", num3)  
findLargestSmallest(num3)  
  
num4 = 45672  
print("num4:", num4)  
findLargestSmallest(num4)  
  
num5 = 76567  
print("num5:", num5)  
findLargestSmallest(num5)

Вывод тот же, что и в примерах выше.

JavaScript — программа для поиска наибольшей и наименьшей цифры

Различные среды (браузер или Node.js) выводят по-разному; в примере используется document.write на веб-странице.

// JavaScript program to find the largest and smallest  
// digit of a number  
  
function findLargestSmallest(num) {  
    var largestDigit = 0;  
    var smallestDigit = 9;  
    var digit;  
    while(num) {  
        digit = num%10;  
        // Finding the largest digit  
        largestDigit = Math.max(digit, largestDigit);  
  
        // Find the smallest digit  
        smallestDigit = Math.min(digit, smallestDigit);  
        num = parseInt(num / 10);  
    }  
    document.write("Largest Digit: " + largestDigit + "  \n");  
    document.write("Smallest Digit: " + smallestDigit + "  \n");  
}  
  
// Driver Code  
var num1 = 238627;  
document.write("num1: " + num1 + "  \n");  
findLargestSmallest(num1);  
  
var num2 = 34552;  
document.write("num2: " + num2 + "  \n");  
findLargestSmallest(num2);  
  
var num3 = 123;  
document.write("num3: " + num3 + "  \n");  
findLargestSmallest(num3);  
  
var num4 = 45672;  
document.write("num4: " + num4 + "  \n");  
findLargestSmallest(num4);  
  
var num5 = 76567;  
document.write("num5: " + num5 + "  \n");  
findLargestSmallest(num5);

C — программа для поиска наибольшей и наименьшей цифры

Классический C-код с макросами Max/Min.

// C program to find the largest and smallest  
// digit of a number  
#include   
#define Max(a,b) (a>b?a:b)  
#define Min(a,b) (a>b?b:a)  
  
void findLargestSmallest(int num)  
{  
    int largestDigit = 0;  
    int smallestDigit = 9;  
    int digit;  
    while(num)  
    {  
        digit = num%10;  
        // Finding the largest digit  
        largestDigit = Max(digit, largestDigit);  
  
        // Find the smallest digit  
        smallestDigit = Min(digit, smallestDigit);  
        num = num/10;  
    }  
    printf("Largest Digit: %d \\\n", largestDigit);  
    printf("Smallest Digit: %d \\\n", smallestDigit);  
}  
  
// Driver Code  
int main()  
{  
    int num1 = 238627;  
    printf("num1: %d \\\n", num1);  
    findLargestSmallest(num1);  
  
    int num2 = 34552;  
    printf("num2: %d \\\n", num2);  
    findLargestSmallest(num2);  
  
    int num3 = 123;  
    printf("num3: %d \\\n", num3);  
    findLargestSmallest(num3);  
  
    int num4 = 45672;  
    printf("num4: %d \\\n", num4);  
    findLargestSmallest(num4);  
  
    int num5 = 76567;  
    printf("num5: %d \\\n", num5);  
    findLargestSmallest(num5);  
  
    return 0;  
}

Java — программа для поиска наибольшей и наименьшей цифры

Пример на Java с использованием Math.max / Math.min.

// Java program to find the largest and smallest  
// digit of a number  
  
public class Main  
{  
    static void findLargestSmallest(int num)  
    {  
        int largestDigit = 0;  
        int smallestDigit = 9;  
        int digit;  
  
        while(num != 0)  
        {  
            digit = num % 10;  
  
            // Finding the largest digit  
            largestDigit = Math.max(digit, largestDigit);  
  
            // Finding the smallest digit  
            smallestDigit = Math.min(digit, smallestDigit);  
  
            num = num / 10;  
        }  
        System.out.println("Largest Digit: " + largestDigit);  
        System.out.println("Smallest Digit: " + smallestDigit);  
    }  
  
    // Driver Code  
    public static void main(String[] args) {  
        int num1 = 238627;  
        System.out.println("num1: " + num1);  
        findLargestSmallest(num1);  
  
        int num2 = 34552;  
        System.out.println("num2: " + num2);  
        findLargestSmallest(num2);  
  
        int num3 = 123;  
        System.out.println("num3: " + num3);  
        findLargestSmallest(num3);  
  
        int num4 = 45672;  
        System.out.println("num4: " + num4);  
        findLargestSmallest(num4);  
  
        int num5 = 76567;  
        System.out.println("num5: " + num5);  
        findLargestSmallest(num5);  
    }  
}

Альтернативные подходы

  • Преобразование в строку: конвертируете число в строку, итерируете символы, сравниваете кодовые значения или преобразуете каждый символ в число. Это удобно для очень больших чисел или когда требуется учитывать ведущие нули (если число представлено как строка).
  • Использование коллекций: поместить цифры в массив/множество и взять min/max (удобно при дополнительных требованиях: частота цифр и т. п.).
  • Векторизация/параллелизм: для очень длинных чисел (например, числа в виде строки длиной миллионы) можно разбить задачу и выполнить в параллельных потоках.

Когда метод с арифметикой не сработает

  • Негативные числа: нужно взять абсолютное значение перед разбором цифр.
  • Неформатированный ввод (символы, десятичная точка): сначала следует валидировать и очистить ввод.
  • Ведущие нули: при хранении в числовом типе они теряются; если важны, работайте со строкой.

Критерии приёмки

  • Корректно обрабатываются положительные и отрицательные целые числа.
  • Для однозначного числа (например, 7) и наибольшая, и наименьшая цифра должны быть равны 7.
  • При вводе нечисловых символов функция должна возвращать ошибку или корректно игнорировать неподходящие символы (в зависимости от спецификации).

Проверочные тесты (минимальный набор)

  • 238627 → max=8, min=2
  • 34552 → max=5, min=2
  • 123 → max=3, min=1
  • 0 → max=0, min=0
  • -909 → max=9, min=0 (предполагаем абсолютное значение)
  • “00120” (строка) → max=2, min=0 (если считаем ведущие нули)

Быстрая шпаргалка (cheat sheet)

  • Арифметический подход: while (n != 0) { d = n % 10; update min/max; n /= 10 }
  • Строковый подход: for ch in str(n): val = int(ch); update min/max
  • Учтите знак и формат входа заранее.

Модель мышления (одна строка)

Разбить число на единичные цифры и применить простую функцию сравнения (min/max) — O(d), где d — число цифр.

Простая карта решений (Mermaid)

flowchart TD
  A[Начало] --> B{Ввод числа}
  B --> |Не число| E[Ошибка]
  B --> |Строка| C[Итерация по символам]
  B --> |Число| D[Взять abs и арифметика]
  C --> F[Обновить min/max]
  D --> F
  F --> G[Вывести результат]
  E --> H[Завершить с ошибкой]

Глоссарий (коротко)

  • Цифра — отдельный десятичный разряд числа (0–9).
  • Арифметический разбор — процесс получения цифр через % и /.

Итог

Этот приём — шаблонная задача для практики базовой арифметики и работы с типами данных. Арифметический метод прост и эффективен для типичных целых чисел; строковый метод удобен для больших чисел и случаев с ведущими нулями. Выберите подход в зависимости от требований к вводу и производительности.

Важно: всегда валидируйте ввод (отрицательные числа, нечисловые символы, формат строки) и покрывайте крайние случаи тестами.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Пересылка почты Outlook ↔ Gmail: полное руководство
Почта

Пересылка почты Outlook ↔ Gmail: полное руководство

Как узнать, что пора менять батарейку AirTag
Гаджеты

Как узнать, что пора менять батарейку AirTag

Как удалить устройства из Google Home
Умный дом

Как удалить устройства из Google Home

Вернуть «Open command window here» в Windows 11
Windows

Вернуть «Open command window here» в Windows 11

Подключение Bluetooth-наушников к Wear OS
Гаджеты

Подключение Bluetooth-наушников к Wear OS

Запустить успешную страницу на Patreon
Монетизация

Запустить успешную страницу на Patreon