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

Найти наибольшую и наименьшую цифру числа — примеры на 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
Автор
Редакция

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

RDP: полный гид по настройке и безопасности
Инфраструктура

RDP: полный гид по настройке и безопасности

Android как клавиатура и трекпад для Windows
Гайды

Android как клавиатура и трекпад для Windows

Советы и приёмы для работы с PDF
Документы

Советы и приёмы для работы с PDF

Calibration в Lightroom Classic: как и когда использовать
Фото

Calibration в Lightroom Classic: как и когда использовать

Отключить Siri Suggestions на iPhone
iOS

Отключить Siri Suggestions на iPhone

Рисование таблиц в Microsoft Word — руководство
Office

Рисование таблиц в Microsoft Word — руководство