Математика и программирование идут рука об руку — числа повсюду в коде. Будь то проверка, является ли число простым, генерация последовательностей Фибоначчи или определение палиндрома, эти небольшие задачи оттачивают как ваши математические навыки, так и логическое мышление в коде. 

В этой статье мы рассмотрим 20 дружелюбных для начинающих задач по программированию, основанных на числах. Для каждой задачи вы получите краткое объяснение математической концепции, несколько примеров входных и выходных данных, а также готовое решение на Python. Это увлекательный способ практиковать кодирование, изучая, как математические идеи, такие как совершенные квадраты, кубы и треугольные числа, могут ожить в коде.

1. Сумма первых N натуральных чисел

Что требуется в упражнении:

Напишите программу для нахождения суммы первых n натуральных чисел. Это поможет вам попрактиковаться в циклах или математических формулах.

Что такое натуральное число?

Натуральные числа — это числа для счета, начиная с 1: 1, 2, 3, 4, …

Пример ввода

5

Пример вывода

15

Решение на Python

# Считываем n и вычисляем сумму первых n натуральных чисел, используя закрытую формулу
n = int(input("Введите n: "))
# Используем целочисленную арифметику (//), чтобы избежать дробных чисел
total = n * (n + 1) // 2
print(total)

2. Проверка на четность или нечетность

Что требуется в упражнении:

Введите целое число и выведите, является ли оно четным или нечетным.

Что такое четное/нечетное число?

Четные числа делятся на 2 (например, 2, 4, 6). Нечетные числа дают остаток 1 при делении на 2 (например, 1, 3, 5).

Пример ввода

7

Пример вывода

7 is odd

Решение на Python

# Определяем, является ли введенное целое число четным или нечетным, используя модуль
n = int(input("Введите число: "))
if n % 2 == 0:
    print(f"{n} четное")
else:
    print(f"{n} нечетное")

3. Проверка на простое число

Что требуется в упражнении:

Напишите программу, чтобы проверить, является ли данное число простым.

Что такое простое число?

Простое число больше 1 и делится только на 1 и само на себя (например, 2, 3, 5, 7).

Пример ввода

13

Пример вывода

13 is prime

Решение на Python

# Проверяем простоту, пытаясь делить до sqrt(n)
n = int(input("Введите число: "))
if n < 2:
    print(f"{n} не простое")
else:
    for d in range(2, int(n**0.5) + 1):
        if n % d == 0:
            print(f"{n} не простое")
            break
    else:
        print(f"{n} простое")

4. Сумма цифр

Что требуется в упражнении:

Найдите сумму всех цифр числа.

Почему важны суммы цифр?

Суммы цифр появляются в правилах делимости и различных числовых задачах (например, число делится на 3, если сумма цифр делится на 3).

Пример ввода

1234

Пример вывода

10

Решение на Python

# Суммируем цифры, перебирая символы и преобразуя в целые числа
s = input("Введите число: ").strip()
digit_sum = sum(int(ch) for ch in s if ch.isdigit())
print(digit_sum)

5. Проверка на палиндромное число

Что требуется в упражнении:

Проверьте, читается ли число одинаково вперед и назад.

Что такое палиндромное число?

Число, такое как 121, 1331 или 12321, которое остается тем же при обратном чтении.

Пример ввода

12321

Пример вывода

12321 is a palindrome

Решение на Python

# Сравниваем строку с ее обратной версией, чтобы проверить на палиндром
s = input("Введите число: ").strip()
print(f"{s} палиндром" if s == s[::-1] else f"{s} не палиндром")

6. Найти все делители числа

Что требуется в упражнении:

Перечислите все числа, которые делят n нацело.

Что такое делители?

Делители — это целые числа, которые можно умножить, чтобы получить n. Для 12 делителями являются 1, 2, 3, 4, 6, 12.

Пример ввода

12

Пример вывода

1 2 3 4 6 12

Решение на Python

# Генерируем все делители, проверяя от 1 до n
n = int(input("Введите число: "))
factors = [d for d in range(1, n+1) if n % d == 0]
print(" ".join(map(str, factors)))

7. Проверка на совершенное число

Что требуется в упражнении:

Проверьте, равно ли n сумме его собственных делителей (исключая само число).

Что такое совершенное число?

Числа, такие как 6 (=1+2+3) и 28 (=1+2+4+7+14), являются совершенными числами.

Пример ввода

28

Пример вывода

28 is a perfect number

Решение на Python

# Суммируем собственные делители (исключая n) и сравниваем с n
n = int(input("Введите число: "))
proper = [d for d in range(1, n) if n % d == 0]
print(f"{n} совершенное число" if sum(proper) == n else f"{n} не совершенное число")

8. Проверка на число Армстронга (Нарциссическое число)

Что требуется в упражнении:

Проверьте, равно ли n сумме его цифр, возведенных в степень количества цифр.

Что такое число Армстронга?

Пример: 153 = 1³ + 5³ + 3³; 9474 = 9⁴ + 4⁴ + 7⁴ + 4⁴.

Пример ввода

153

Пример вывода

153 is an Armstrong number

Решение на Python

# Возводим каждую цифру в степень общего количества цифр и суммируем
s = input("Введите число: ").strip()
p = len(s)
arm = sum(int(ch)**p for ch in s)
print(f"{s} число Армстронга" if arm == int(s) else f"{s} не число Армстронга")

9. Проверка на совершенный квадрат

Что требуется в упражнении:

Проверьте, является ли число совершенным квадратом.

Что такое совершенный квадрат?

Число, которое можно записать как k² (например, 4, 9, 16, 25).

Пример ввода

49

Пример вывода

49 is a perfect square

Решение на Python

# Используем целочисленный квадратный корень, чтобы избежать проблем с плавающей точкой
import math
n = int(input("Введите число: "))
print(f"{n} совершенный квадрат" if math.isqrt(n)**2 == n else f"{n} не совершенный квадрат")

10. Проверка на совершенный куб

Что требуется в упражнении:

Проверьте, является ли число совершенным кубом.

Что такое совершенный куб?

Число, которое можно выразить как k³ (например, 8, 27, 64).

Пример ввода

27

Пример вывода

27 is a perfect cube

Решение на Python

# Приблизительный кубический корень, округляем и проверяем, возводя в куб обратно
n = int(input("Введите число: "))
croot = round(n ** (1/3))
print(f"{n} совершенный куб" if croot**3 == n else f"{n} не совершенный куб")

11. Генератор последовательности Фибоначчи

Что требуется в упражнении:

Сгенерируйте первые n чисел Фибоначчи.

Что такое число Фибоначчи?

Последовательность, начинающаяся с 0, 1, где каждый новый член — это сумма двух предыдущих: 0, 1, 1, 2, 3, 5, 8, …

Пример ввода

7

Пример вывода

0 1 1 2 3 5 8

Решение на Python

# Итеративно строим последовательность Фибоначчи, используя два трекера
n = int(input("Введите n: "))
a, b = 0, 1
seq = []
for _ in range(n):
    seq.append(a)
    a, b = b, a + b
print(" ".join(map(str, seq)))

12. Проверка, принадлежит ли число последовательности Фибоначчи

Что требуется в упражнении:

Проверьте, принадлежит ли данное число последовательности Фибоначчи.

Математический факт:

n является числом Фибоначчи, если (5n² + 4) или (5n² − 4) является совершенным квадратом.

Пример ввода

21

Пример вывода

21 is a Fibonacci number

Решение на Python

# Используем тест на совершенный квадрат 5n^2±4, чтобы проверить принадлежность к Фибоначчи
import math

def is_square(x: int) -> bool:
    return math.isqrt(x)**2 == x

n = int(input("Введите число: "))
if is_square(5*n*n + 4) or is_square(5*n*n - 4):
    print(f"{n} число Фибоначчи")
else:
    print(f"{n} не число Фибоначчи")

13. Проверка на треугольное число

Что требуется в упражнении:

Проверьте, является ли n треугольным: n = k(k+1)/2 для некоторого целого k.

Что такое треугольное число?

Они формируют треугольники из точек: 1, 3, 6, 10, 15, …

Пример ввода

15

Пример вывода

15 is a triangular number

Решение на Python

# Решаем k(k+1)/2 = n, проверяя k = floor((sqrt(8n+1)-1)/2)
import math
n = int(input("Введите число: "))
k = int((math.isqrt(8*n + 1) - 1) // 2)
print(f"{n} треугольное число" if k * (k + 1) // 2 == n else f"{n} не треугольное число")

14. Рациональное число (десятичное → дробь)

Что требуется в упражнении:

Преобразуйте десятичное число в упрощенную дробь p/q.

Что такое рациональное число?

Число, которое можно выразить как отношение целых чисел (например, 0.75 = 3/4).

Пример ввода

0.75

Пример вывода

3/4

Решение на Python

# Используем Fraction для преобразования десятичного числа в p/q и упрощения
from fractions import Fraction
x = float(input("Введите десятичное число: "))
print(Fraction(x).limit_denominator())

15. Проверка на треугольное число

Что требуется в упражнении:

Проверьте, является ли число треугольным, то есть может ли оно образовать равносторонний треугольник.

Что такое треугольное число?

Треугольные числа — это суммы первых n натуральных чисел: 1, 3, 6, 10, 15…

Пример ввода

10

Пример вывода

10 is a triangular number

Решение на Python

import math

n = int(input("Введите число: "))
# Формула: если 8n+1 — совершенный квадрат, то n треугольное
check = 8 * n + 1
if int(math.isqrt(check))**2 == check:
    print(f"{n} треугольное число")
else:
    print(f"{n} не треугольное число")

16. Генератор последовательности Фибоначчи

Что требуется в упражнении:

Сгенерируйте последовательность Фибоначчи до n членов.

Что такое последовательность Фибоначчи?

Это последовательность, где каждое число — это сумма двух предыдущих: 0, 1, 1, 2, 3, 5, 8…

Пример ввода

7

Пример вывода

0 1 1 2 3 5 8

Решение на Python

n = int(input("Введите количество членов: "))
a, b = 0, 1
for _ in range(n):
    print(a, end=" ")
    a, b = b, a + b

17. Сумма цифр

Что требуется в упражнении:

Вычислите сумму всех цифр в заданном числе.

Что это значит?

Пример: цифры числа 1234 — это 1+2+3+4 = 10.

Пример ввода

1234

Пример вывода

10

Решение на Python

n = input("Введите число: ")
# Преобразуем каждый символ обратно в int и суммируем
s = sum(int(d) for d in n)
print(s)

18. Обратное число

Что требуется в упражнении:

Переверните цифры данного числа.

Что это значит?

Пример: 12345 становится 54321.

Пример ввода

12345

Пример вывода

54321

Решение на Python

n = input("Введите число: ")
# Используем срез для реверса
print(n[::-1])

19. Наибольший общий делитель (НОД)

Что требуется в упражнении:

Найдите наибольшее число, которое делит два целых числа без остатка.

Что такое НОД?

Наибольший делитель, общий для обоих чисел. Пример: gcd(12, 18) = 6.

Пример ввода

12 18

Пример вывода

6

Решение на Python

import math

a, b = map(int, input("Введите два числа: ").split())
# Используем math.gcd для эффективности
print(math.gcd(a, b))

20. Наименьшее общее кратное (НОК)

Что требуется в упражнении:

Найдите наименьшее число, которое делится на оба заданных целых числа.

Что такое НОК?

Наименьшее общее кратное двух чисел. Пример: lcm(4, 6) = 12.

Пример ввода

4 6

Пример вывода

12

Решение на Python

import math

a, b = map(int, input("Введите два числа: ").split())
# Формула: lcm(a, b) = abs(a*b) // gcd(a, b)
print(abs(a*b) // math.gcd(a, b))