Перейти к содержимому

Perfect Number Checker

Проверьте, является ли число совершенным, дефицитным или избыточным. Найдите делители и суммы делителей.

Найти совершённые числа

Известные совершённые числа

Об этом инструменте

Совершенные числа представляют редкое математическое явление, при котором положительное целое число равно сумме всех своих собственных делителей—свойство столь элегантное, что древние математики считали его святым. Эти числа глубоко связаны с изучением теории чисел, факторизацией простых чисел и математической красотой, являясь гораздо большим, чем просто любопытства. Совершенные числа пленяли воображение математиков более двух тысяч лет, и их тайна продолжается и сегодня: всего 51 известный пример несмотря на столетия поисков.

Используйте эту проверку для исследования классификации любого целого числа: является ли оно совершенным, избыточным (сумма делителей превосходит само число) или недостаточным (сумма делителей меньше)? Инструмент мгновенно вычисляет все собственные делители и их сумму, обеспечивая полную прозрачность структуры числа. Это незаменимо для студентов, изучающих свойства делимости, математиков, исследующих закономерности теории чисел, учёных, работающих над алгоритмами простых чисел Мерсенна, или любого, кто интересуется скрытой арифметической структурой чисел.

Любопытно, что все известные совершенные числа чётные и следуют элегантной формуле Эйлера: 2^(p−1) × (2^p − 1), где (2^p − 1) является простым числом Мерсенна. Поиск новых совершенных чисел равносилен открытию новых простых чисел Мерсенна—поиск, который связывает развлекательную математику с передовыми компьютерными исследованиями через такие проекты, как GIMPS. Проверяете ли вы гипотезу, преподаёте ли свойства делителей или просто восхищаетесь математической структурой, этот инструмент превращает абстрактную теорию чисел в осязаемые, проверяемые результаты.

Часто задаваемые вопросы

Реализация кода

def get_proper_divisors(n: int) -> list[int]:
    """Get all proper divisors of n (excluding n itself)."""
    if n <= 1:
        return []
    divisors = [1]
    i = 2
    while i * i <= n:
        if n % i == 0:
            divisors.append(i)
            if i != n // i:
                divisors.append(n // i)
        i += 1
    return sorted(divisors)

def check_perfect(n: int) -> dict:
    """Check if n is perfect, deficient, or abundant."""
    if n <= 0:
        return {"error": "Must be positive"}

    divisors = get_proper_divisors(n)
    divisor_sum = sum(divisors)

    if divisor_sum == n:
        classification = "perfect"
    elif divisor_sum < n:
        classification = "deficient"
    else:
        classification = "abundant"

    return {
        "number": n,
        "divisors": divisors,
        "divisor_sum": divisor_sum,
        "is_perfect": divisor_sum == n,
        "classification": classification,
        "difference": n - divisor_sum
    }

# Known perfect numbers
perfect_numbers = [6, 28, 496, 8128, 33550336]
for p in perfect_numbers:
    r = check_perfect(p)
    print(f"{p}: {r['classification']} (divisors sum = {r['divisor_sum']})")
    print(f"  Divisors: {r['divisors']}")

# Find abundant numbers up to 100
print("\nAbundant numbers up to 100:")
abundant = [n for n in range(2, 101) if check_perfect(n)["classification"] == "abundant"]
print(abundant)

Comments & Feedback

Comments are powered by Giscus. Sign in with GitHub to leave a comment.