Математика и программирование идут рука об руку — числа повсюду в коде. Будь то проверка, является ли число простым, генерация последовательностей Фибоначчи или определение палиндрома, эти небольшие задачи оттачивают как ваши математические навыки, так и логическое мышление в коде.
В этой статье мы рассмотрим 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))