Trong bài viết này, chúng ta sẽ học về giải pháp cho bài toán cho trước:
Đề bài
Cho một số đầu vào n, nhiệm vụ là tìm tổng các ước số lẻ của một số.
Ở đây chúng ta trước tiên cần loại bỏ tất cả các ước số chẵn.
Để loại bỏ tất cả ước số chẵn, chúng ta liên tục chia n cho đến khi nó chia hết cho 2. Sau bước này, chúng ta chỉ nhận được các ước số lẻ của số đó.
Dưới đây là triển khai:
Ví dụ
import math
def sumofoddFactors(n):
# ước nguyên tố
res = 1
# bỏ qua ước chẵn
while n % 2 == 0:
n = n // 2
for i in range(3, int(math.sqrt(n) + 1)):
count = 0
curr_sum = 1
curr_term = 1
while n % i == 0:
count += 1
n = n // i
curr_term *= i
curr_sum += curr_term
res *= curr_sum
# n là số nguyên tố.
if n >= 2:
res *= (1 + n)
return res
# main
n = 27
print(sumofoddFactors(n))
Kết quả
41
Tất cả biến được khai báo trong khung toàn cục như hình dưới đây:

Kết luận
Trong bài viết này, chúng ta đã học về cách tìm tổng ước số lẻ của một số.