Điểm:
200 (p)
Thời gian:
1.0s
Bộ nhớ:
256M
Input:
bàn phím
Output:
màn hình
Trong số học, số phong phú là các số mà tổng các ước số của số đó (không kể chính nó) lớn hơn số đó. Ví dụ, số \(12\) có tổng các ước số (không kể \(12\)) là \(1 + 2 + 3 + 4 + 6 = 16 > 12\). Do đó \(12\) là một số phong phú.
Bạn hãy lập trình đếm xem có bao nhiêu số phong phú trong đoạn [\(L,R\)].
Input
- Gồm 2 số \(L, R\) (\(1 \leq L \leq R \leq 10^6\))
Output
- Gồm 1 số nguyên duy nhất là số số phong phú trong đoạn [\(L, R\)].
Scoring
- Subtask \(1\) (\(50\%\) số điểm): \(1 \leq L \leq R \leq 10^3\)
- Subtask \(2\) (\(50\%\) số điểm): Không có ràng buộc gì thêm
Example
Test 1
Input
1
50
Output
9
Note
Từ \(1\) đến \(50\) có \(9\) số phong phú là: \(12, 18, 20, 24, 30, 36, 40, 42, 48\)
Bình luận
import math
def sum_of_divisors(n):
# Hàm tính tổng các ước số của n (không kể chính nó)
total = 1
sqrt_n = int(math.sqrt(n))
for i in range(2, sqrt_n + 1):
if n % i == 0:
total += i
if i != n // i:
total += n // i
return total
def count_abundant_numbers(L, R):
count = 0
for i in range(L, R + 1):
if sum_of_divisors(i) > i:
count += 1
return count
Đọc dữ liệu đầu vào
L, R = map(int, input().split())
Đếm số phong phú trong đoạn [L, R]
result = count_abundant_numbers(L, R)
Xuất kết quả
print(result)
Code này sai ở đâu vậy
3 bình luận nữa