您的位置:

数字12312321的奇妙之处

一、数字的结构

12312321是一个八位数。

num = 12312321
digit1 = num // 10000000    # 取得第一位数字
digit2 = (num // 1000000) % 10    # 取得第二位数字
digit3 = (num // 100000) % 10    # ...
digit4 = (num // 10000) % 10
digit5 = (num // 1000) % 10
digit6 = (num // 100) % 10
digit7 = (num // 10) % 10
digit8 = num % 10    # 取得最后一位数字

它是一个对称数,从左到右和从右到左读都是一样的。

def is_palindrome(n):
    s = str(n)
    return s == s[::-1]

print(is_palindrome(12312321))    # True

二、数字的因子

12312321有8个因子:1、3、9、1379147、4137441、12412323、36904107和12312321。

def get_factors(n):
    factors = set()
    for i in range(1, int(n ** 0.5) + 1):
        if n % i == 0:
            factors.add(i)
            factors.add(n // i)
    return factors

print(sorted(list(get_factors(12312321))))

三、数字的各位数之和

12312321的各位数之和是15。

def digit_sum(n):
    return sum(int(d) for d in str(n))

print(digit_sum(12312321))    # 15

四、数字的反码

12312321的反码是21169406。

def bitwise_not(n):
    return ~n & (2 ** n.bit_length() - 1)

def complement(n):
    return bitwise_not(n) + 1

print(complement(12312321))    # 21169406

五、数字的平方根

12312321的平方根是3511。

def sqrt(n):
    x = n
    y = (x + 1) // 2
    while y < x:
        x = y
        y = (x + n // x) // 2
    return x

print(sqrt(12312321))    # 3511