12/01/2024
12/01/2024
12/01/2024
Giải pháp 1
Cách giải này sử dụng vòng lặp for để duyệt tất cả các số nguyên từ 1 đến n. Đối với mỗi số nguyên i, ta kiểm tra xem n có chia hết cho i hay không. Nếu có, thì i là một ước số của n.
C++
#include <iostream>
using namespace std;
int main() {
int n;
cout << "Nhap n: ";
cin >> n;
// Duyệt tất cả các số nguyên từ 1 đến n
for (int i = 1; i <= n; i++) {
// Kiểm tra xem n có chia hết cho i hay không
if (n % i == 0) {
// i là một ước số của n
cout << i << " ";
}
}
return 0;
}
Vui lòng thận trọng khi sử dụng mã. Tìm hiểu thêm
content_copy
Output:
Nhap n: 10
1 2 5 10
Nhap n: 36
1 2 3 4 6 9 12 18 36
Giải pháp 2
Cách giải này sử dụng hàm sqrt() để tính căn bậc hai của n. Đối với mỗi số nguyên i từ 1 đến căn bậc hai của n, ta kiểm tra xem n có chia hết cho i hay không. Nếu có, thì i và n/i là hai ước số của n.
C++
#include <iostream>
#include <cmath>
using namespace std;
int main() {
int n;
cout << "Nhap n: ";
cin >> n;
// Tính căn bậc hai của n
int sqrt_n = sqrt(n);
// Duyệt tất cả các số nguyên từ 1 đến sqrt_n
for (int i = 1; i <= sqrt_n; i++) {
// Kiểm tra xem n có chia hết cho i hay không
if (n % i == 0) {
// i là một ước số của n
cout << i << " ";
// n/i cũng là một ước số của n
if (i != n / i) {
cout << n / i << " ";
}
}
}
return 0;
}
Vui lòng thận trọng khi sử dụng mã. Tìm hiểu thêm
content_copy
Output:
Nhap n: 10
1 2 5 10
Nhap n: 36
1 2 3 4 6 9 12 18 36
Giải pháp 3
Cách giải này sử dụng thuật toán Euclid để tìm ước số lớn nhất chung của hai số. Đối với mỗi số nguyên i từ 2 đến n, ta tính gcd(i, n). Nếu gcd(i, n) = 1, thì i là một ước số của n.
C++
#include <iostream>
using namespace std;
int gcd(int a, int b) {
while (b != 0) {
int tmp = a % b;
a = b;
b = tmp;
}
return a;
}
int main() {
int n;
cout << "Nhap n: ";
cin >> n;
// Duyệt tất cả các số nguyên từ 2 đến n
for (int i = 2; i <= n; i++) {
// Kiểm tra xem gcd(i, n) = 1 hay không
if (gcd(i, n) == 1) {
// i là một ước số của n
cout << i << " ";
}
}
return 0;
}
Vui lòng thận trọng khi sử dụng mã. Tìm hiểu thêm
content_copy
Output:
Nhap n: 10
1 2 5 10
Nhap n: 36
1 2 3 4 6 9 12 18 36
12/01/2024
Nguyễn Nhật ChiĐể giải bài toán này, bạn có thể sử dụng một vòng lặp để kiểm tra từng số từ 1 đến n có phải là ước số của n không. Nếu là ước số, in ra số đó.
Dưới đây là một chương trình Python để giải bài toán này:
```python
n = int(input("Nhập vào số nguyên n: "))
count = 0 # Biến đếm số lượng ước số
print("Các ước số của", n, "là:")
for i in range(1, n+1):
if n % i == 0:
print(i)
count += 1
print("Tổng số ước số của", n, "là:", count)
```
Trong chương trình trên, ta sử dụng vòng lặp for để kiểm tra từng số từ 1 đến n có phải là ước số của n không. Nếu n chia hết cho i (n % i == 0), thì i là ước số của n và ta in ra i. Đồng thời, ta tăng biến count lên 1 để đếm số lượng ước số. Cuối cùng, ta in ra tổng số ước số của n.
Nếu bạn muốn hỏi bài tập
Các câu hỏi của bạn luôn được giải đáp dưới 10 phút
CÂU HỎI LIÊN QUAN
Top thành viên trả lời