跳到内容
🛠️ToolsShed

Number Palindrome Checker

检查数字是否为回文,查找范围内的回文,发现有趣的回文数。

12321
是回文数
反向: 12321

关于此工具

数字回文是指像121或3443这样正着读和反着读都相同的数字。数字回文检查器让您可以瞬间验证任何数字是否为回文,探索某个范围内的所有回文以发现模式,并深入了解这些对称数字的迷人数学特性。

使用该工具非常简单:输入单个数字以检查它是否为回文,或指定一个范围来查找其中的所有回文。您可以检查回文在不同数字范围内的分布情况,从小整数到较大的值,并深入了解它们的频率和数学特征。

该工具对学习数论的学生、探索数字模式的数学家以及对数字奇妙性质感到好奇的任何人都很有用。虽然检查器适用于任何正整数,但处理非常大的数字可能需要稍长时间,但基本原理保持不变:真正的回文完全围绕其中心数字对称。

常见问题

代码实现

def is_palindrome(n) -> bool:
    """Check if a number (int or string) is a palindrome."""
    s = str(n)
    return s == s[::-1]

def next_palindrome(n: int) -> int:
    """Find the next palindrome after n."""
    n += 1
    while not is_palindrome(n):
        n += 1
    return n

def find_palindromes_in_range(start: int, end: int) -> list[int]:
    """Find all palindrome numbers in range [start, end]."""
    return [i for i in range(start, end + 1) if is_palindrome(i)]

# Check specific numbers
for num in [12321, 12345, 99999, 100001, 1234321]:
    result = "✓ palindrome" if is_palindrome(num) else "✗ not palindrome"
    print(f"{num}: {result}")

# Find palindromes in range
print("\nPalindromes 100-200:", find_palindromes_in_range(100, 200))
print("Next palindrome after 999:", next_palindrome(999))
print("Next palindrome after 12345:", next_palindrome(12345))

# Lychrel number check (reverse and add)
def reverse_and_add(n: int, steps: int = 50) -> tuple[bool, int]:
    for _ in range(steps):
        n += int(str(n)[::-1])
        if is_palindrome(n):
            return True, n
    return False, n

print("\n196 Lychrel test:", reverse_and_add(196, 100)[0])  # Famous non-palindrome

Comments & Feedback

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