Trong bài viết này, chúng ta sẽ tìm hiểu giải pháp cho bài toán sau:
Đề bài – Cho một số, cần hiển thị tổng của tất cả các ước số chẵn của số đó.
Phương pháp
Kiểm tra xem số có lẻ không, nếu lẻ thì không có ước số chẵn, trả về 0.
Nếu số chẵn, tiến hành tính toán. Tất cả các hạng tử trừ 2^0 (là 1) nhân với nhau tạo ra tổng ước chẵn. Để loại bỏ các ước lẻ, ta bỏ qua 2^0. Lưu ý 2 là số nguyên tố chẵn duy nhất.
Hãy xem triển khai dưới đây:
Ví dụ
# module math
import math
# Trả về tổng tất cả ước số của n
def sumofevenFactors(n):
# Nếu n lẻ
if (n % 2 != 0):
return 0
# Duyệt
res = 1
for i in range(2, int(math.sqrt(n)) + 1):
# nếu i chia hết n
count = 0
curr_sum = 1
curr_term = 1
while (n % i == 0):
count = count + 1
n = n // i
# ở đây ta loại bỏ 2^0 = 1. Tất cả các ước khác
if (i == 2 and count == 1):
curr_sum = 0
curr_term = curr_term * i
curr_sum = curr_sum + curr_term
res = res * curr_sum
# khi n là số nguyên tố
if (n >= 2):
res = res * (1 + n)
return res
# main
n = 22
print(sumofevenFactors(n))
Kết quả
24
Kết luận
Trong bài này, chúng ta đã học cách tìm tổng các ước số chẵn của một số.