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ố chẵn 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ố lẻ.
Nếu số đầu vào là lẻ, nó không có ước số chẵn nên trả về 0 trực tiếp, ngược lại chúng ta sẽ làm theo cách tiếp cận trong mã dưới đây.
Dưới đây là triển khai:
Ví dụ
import math
# Returns sum of all even factors of n.
def sumofFactors(n):
# Nếu n là lẻ
if (n % 2 != 0):
return 0
# tất cả ước nguyên tố
res = 1
for i in range(2, int(math.sqrt(n)) + 1):
count = 0
curr_sum = 1
curr_term = 1
while (n % i == 0):
count = count + 1
n = n // i
# ở đây chúng ta loại bỏ 2^0 tức là 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
# nếu n là số nguyên tố
if (n >= 2):
res = res * (1 + n)
return res
# main
n = 20
print(sumofFactors(n))
Kết quả
36
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ố chẵn của một số.