Bài 1
def prime_factors(n):
i = 2
factors = []
while i * i <= n:
if n % i:
i += 1
else:
n //= i
factors.append(i)
if n > 1:
factors.append(n)
return factors
def sum_digits(n):
return sum(int(digit) for digit in str(n))
def special_number(n):
return sum_digits(n) == sum(sum_digits(p) for p in prime_factors(n))
print(special_number(123)) # Thay 123 bằng số bạn muốn kiểm tra
Bài 2
def next_special_number(n):
while True:
n += 1
if special_number(n):
return n
print(next_special_number(123)) # Thay 123 bằng số bạn muốn tìm số đặc biệt tiếp theo
Bài 3
def is_prime(n):
if n < 2:
return False
for i in range(2, int(n**0.5) + 1):
if n % i == 0:
return False
return True
def special_sum(n):
while n >= 10:
n = sum(int(digit) for digit in str(n))
return n
def double_to_prime(n):
while not is_prime(n):
n *= 2
n = special_sum(n)
return n
print(double_to_prime(123)) # Thay 123 bằng số bạn muốn thực hiện phép nhân và tổng