Bài tập  /  Bài đang cần trả lời

Nhập vào số nguyên N. Đếm xem có bao nhiêu ước thực sự của N. Ước thực sự là ước khác 1 và N

Nhập vào số nguyên N. Đếm xem có bao nhiêu ước thực sự của N. Ước thực sự là ước khác 1 và N.
2 Xem trả lời
Hỏi chi tiết
119
Tham khảo câu trả lời từ Trợ lý ảo Lazi
Để đếm số lượng ước thực sự của một số nguyên \( N \), bạn cần tìm tất cả các ước của \( N \) và loại bỏ 1 và \( N \) ra khỏi danh sách các ước đó. Dưới đây là một đoạn mã Python để thực hiện điều này:

```python
def count_proper_divisors(N):
if N <= 1:
return 0

count = 0
for i in range(2, N):
if N % i == 0:
count += 1
return count

# Nhập vào số nguyên N
N = int(input("Nhập vào số nguyên N: "))

# Đếm số lượng ước thực sự của N
result = count_proper_divisors(N)

# In kết quả
print("Số lượng ước thực sự của", N, "là:", result)
```

Giải thích đoạn mã:
1. Hàm `count_proper_divisors(N)` nhận vào một số nguyên \( N \) và trả về số lượng ước thực sự của \( N \).
2. Nếu \( N \) nhỏ hơn hoặc bằng 1, hàm trả về 0 vì không có ước thực sự nào.
3. Sử dụng vòng lặp từ 2 đến \( N-1 \) để kiểm tra xem \( i \) có phải là ước của \( N \) hay không (tức là \( N \% i == 0 \)).
4. Nếu \( i \) là ước của \( N \), tăng biến đếm `count` lên 1.
5. Sau khi hoàn thành vòng lặp, hàm trả về giá trị của `count`.
6. Đoạn mã chính nhập vào số nguyên \( N \), gọi hàm `count_proper_divisors(N)` và in ra kết quả.

Bạn có thể chạy đoạn mã này và nhập vào một số nguyên để xem số lượng ước thực sự của nó.
1
0
HMinh
08/07 15:21:27
+5đ tặng

Chương trình ở hình 2 có 2 lỗi:

Một là, sau điều kiện ở lệnh while phải có dấu hai chấm (:).

Hai là, chương trình là đếm số ước thực sự của n, vì vậy sau mỗi lần tìm thấy ước của n (n%i == 0) thì biến so_uoc tăng lên 1 đơn vị. Giá trị cuối cùng của biến so_uoc chính là số lượng ước của n. Vì vậy, câu lệnh print phải được đặt ngoài vòng lặp while để sau khi đếm xong số ước chúng ta mới viết ra màn hình. Chương trình viết lại như sau:
 

Mở khóa để xem toàn bộ nội dung trả lời

(?)
Bạn đã đạt đến giới hạn của mình. Bằng cách Đăng ký tài khoản, bạn có thể xem toàn bộ nội dung trả lời
Cải thiện điểm số của bạn bằng cách đăng ký tài khoản Lazi.
Xem toàn bộ các câu trả lời, chat trực tiếp 1:1 với đội ngũ Gia sư Lazi bằng cách Đăng nhập tài khoản ngay bây giờ
Tôi đã có tài khoản? Đăng nhập
2
0
def souoc(a):
m=0
for i in range(2, a) :
if a%i==0:
m=m+1

return 2*m
(Đây là Python nha bạn)

Bạn hỏi - Lazi trả lời

Bạn muốn biết điều gì?

GỬI CÂU HỎI
Học tập không giới hạn cùng học sinh cả nước và AI, sôi động, tích cực, trải nghiệm

Hôm nay bạn thế nào? Hãy nhấp vào một lựa chọn, nếu may mắn bạn sẽ được tặng 50.000 xu từ Lazi

Vui Buồn Bình thường
×
Trợ lý ảo Trợ lý ảo
×
Đấu trường tri thức | Lazi Quiz Challenge +500k
Gửi câu hỏi
×