btvn.vn
Tìm kiếm Đăng nhập

Duyệt số và ước số

Lưu trên thiết bị này
Chuyên đề lựa chọn CS: Kĩ thuật duyệt · Chọn bài khác

Hai lớp duyệt: ứng viên và ước

```python def divisor_count(value): count = 0 for d in range(1, value + 1): if value % d == 0: count += 1 return count ``` ```python def most_divisors_below(N): best, best_count = None, 0 for value in range(1, N): count = divisor_count(value) if count > best_count: best, best_count = value, count return best, best_count ``` Với N nguyên dương, ứng viên là 1,…,N−1, không gồm N. Đếm ước của một ứng viên xét1 đến chính số ấy. Cập nhật khi tần số ước lớn hơn để giữ một số tốt nhất; khi hòa, mã giữ số gặp trước. N=10 cho số 6 với 4 ước1,2,3,6. N=1 không có số nguyên dương nhỏ hơn N, nên trả(None,0), không báo1 như một ứng viên hợp lệ.

Số hoàn hảo dùng tổng ước, loại chính nó

```python def perfect_number(value): total = 0 for d in range(1, value): if value % d == 0: total += d return value > 0 and total == value ``` ```python def perfect_below(N): result = [] for value in range(1, N): if perfect_number(value): result.append(value) return result ``` Số hoàn hảo bằng tổng các ước dương nhỏ hơn chính nó. Ví dụ6=1+2+3;28=1+2+4+7+14. Duyệt ứng viên dưới N và giữ mọi số thỏa, không dừng ở số đầu. Số 1 không hoàn hảo vì không có ước dương nhỏ hơn 1 và tổng bằng 0. Chạy `uoc 10` để nhận(6,4), `hoan-hao 30` để nhận[6,28]. Với `hoan-hao 6`, không lấy 6 vì cận là nhỏ hơn N. Dãy kết quả rỗng được trả bằng[]; không so danh sách với chuỗi rỗng để quyết định có kết quả. Bản thực hành nhận 1<=N<=1000 để chạy cách duyệt đơn giản trên dữ liệu nhỏ.

Bài luyện

Vì sao N=1 cần trả không có ứng viên khi tìm số nguyên dương nhỏ hơn N?
Chọn một đáp án

Bài luyện

Số 6 có bao nhiêu ước dương?
Chọn một đáp án

Bài luyện

Vì sao6 là số hoàn hảo?
Chọn một đáp án

Bài luyện

Liệt kê số hoàn hảo nhỏ hơn 6 có lấy 6 không?
Chọn một đáp án

Đang học