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

Cho 2 số nguyên dương M, N. Tính tổng các số là ước của M trong đoạn từ 1 đến N (vòng lặp while c++)

Cho 2 số nguyên dương M,N. Tính tổng các số là ước của M trong đoạn từ 1 đến N(vòng lặp while c++)
dlv:ghi 2 số M,N(N<=M)
dlr:ghi ra kết quả theo yêu cầu 
             dlv                   dlr     
             12 10               16
2 Xem trả lời
Hỏi chi tiết
45
Tham khảo câu trả lời từ Trợ lý ảo Lazi
Để giải bài toán tính tổng các số là ước của số M trong đoạn từ 1 đến N bằng ngôn ngữ lập trình C++, bạn có thể sử dụng vòng lặp `while`. Dưới đây là một đoạn mã C++ mẫu để thực hiện điều này:

```cpp
#include
using namespace std;

int main() {
int M, N;
cout << "Nhap hai so nguyen duong M, N (N <= M): ";
cin >> M >> N;

// Kiểm tra điều kiện M, N
if (N > M || M <= 0 || N <= 0) {
cout << "Vui long nhap M, N thoa man M >= N > 0." << endl;
return 1; // Kết thúc chương trình nếu không thỏa điều kiện
}

int sum = 0; // Khởi tạo tổng
int i = 1; // Khởi tạo biến đếm

while (i <= N) { // Vòng lặp từ 1 đến N
if (M % i == 0) { // Kiểm tra i có phải là ước của M không
sum += i; // Cộng vào tổng
}
i++; // Tăng biến đếm
}

cout << "Tong cac uoc cua M trong doan tu 1 den N la: " << sum << endl;

return 0;
}
```

### Giải thích đoạn mã:

1. **Nhập dữ liệu**: Chương trình yêu cầu người dùng nhập hai số nguyên dương M và N sao cho N <= M.
2. **Kiểm tra điều kiện đầu vào**: Nếu điều kiện không thỏa mãn, chương trình thông báo và kết thúc.
3. **Khởi tạo biến**: Biến `sum` để lưu tổng và biến `i` để lặp từ 1 đến N.
4. **Vòng lặp while**:
- Kiểm tra nếu `i` là ước của M (`M % i == 0`).
- Nếu đúng, cộng giá trị `i` vào tổng `sum`.
- Tăng `i` lên 1 để tiếp tục với giá trị tiếp theo.
5. **Xuất kết quả**: Cuối cùng, chương trình in ra tổng các ước của M trong đoạn từ 1 đến N.

### Ví dụ:
Nhập vào hai số M = 12 và N = 10:
- Các ước của 12 trong khoảng từ 1 đến 10 là: 1, 2, 3, 4, 6, 12.
- Tổng sẽ là: 1 + 2 + 3 + 4 + 6 = 16, kết quả được in ra là 16.
1
0
+5đ tặng
Hiểu rõ bài toán
  • Input: Hai số nguyên dương M và N (N ≤ M).
  • Output: Tổng các số là ước của M trong khoảng từ 1 đến N.
  • Yêu cầu: Sử dụng vòng lặp while trong C++.
Phân tích và thuật toán
  1. Nhập dữ liệu: Nhập hai số nguyên dương M và N từ bàn phím.
  2. Khởi tạo biến:
    • sum: Biến để lưu trữ tổng các ước tìm được, khởi tạo bằng 0.
    • i: Biến đếm, khởi tạo bằng 1.
  3. Vòng lặp while:
    • Điều kiện: i <= N
    • Thân vòng lặp:
      • Nếu M chia hết cho i (nghĩa là i là ước của M) thì cộng i vào sum.
      • Tăng i lên 1.
  4. In kết quả: In ra giá trị của sum.
Mã C++
C++
#include <iostream> using namespace std; int main() { int M, N, i, sum = 0; // Nhập dữ liệu cout << "Nhap M, N (N <= M): "; cin >> M >> N; // Kiểm tra điều kiện N <= M if (N > M) { cout << "Nhap sai! N phai nho hon hoac bang M." << endl; return 1; } // Tính tổng các ước của M trong đoạn 1 đến N i = 1; while (i <= N) { if (M % i == 0) { sum += i; } i++; } // In kết quả cout << "Tong cac uoc cua " << M << " trong doan 1 den " << N << " la: " << sum << endl; return 0; }
Giải bài toán bằng C++: Tính tổng các ước của M trong đoạn 1 đến N
Hiểu rõ bài toán
  • Input: Hai số nguyên dương M và N (N ≤ M).
  • Output: Tổng các số là ước của M trong khoảng từ 1 đến N.
  • Yêu cầu: Sử dụng vòng lặp while trong C++.
Phân tích và thuật toán
  1. Nhập dữ liệu: Nhập hai số nguyên dương M và N từ bàn phím.
  2. Khởi tạo biến:
    • sum: Biến để lưu trữ tổng các ước tìm được, khởi tạo bằng 0.
    • i: Biến đếm, khởi tạo bằng 1.
  3. Vòng lặp while:
    • Điều kiện: i <= N
    • Thân vòng lặp:
      • Nếu M chia hết cho i (nghĩa là i là ước của M) thì cộng i vào sum.
      • Tăng i lên 1.
  4. In kết quả: In ra giá trị của sum.
Mã C++
C++
#include <iostream> using namespace std; int main() { int M, N, i, sum = 0; // Nhập dữ liệu cout << "Nhap M, N (N <= M): "; cin >> M >> N; // Kiểm tra điều kiện N <= M if (N > M) { cout << "Nhap sai! N phai nho hon hoac bang M." << endl; return 1; } // Tính tổng các ước của M trong đoạn 1 đến N i = 1; while (i <= N) { if (M % i == 0) { sum += i; } i++; } // In kết quả cout << "Tong cac uoc cua " << M << " trong doan 1 den " << N << " la: " << sum << endl; return 0; }
Hãy thận trọng khi sử dụng các đoạn mã.

Giải thích mã
  • Dòng 1-2: Thư viện iostream cho phép nhập xuất dữ liệu.
  • Dòng 4-5: Khai báo các biến cần thiết.
  • Dòng 7-10: Nhập dữ liệu và kiểm tra điều kiện N ≤ M.
  • Dòng 12-17: Vòng lặp while để duyệt qua các số từ 1 đến N.
  • Dòng 13-14: Kiểm tra xem i có phải là ước của M không và cộng vào tổng nếu đúng.
  • Dòng 18-19: In kết quả ra màn hình.Với input M = 12, N = 10, chương trình sẽ in ra kết quả là 16 vì các ước của 12 trong đoạn 1 đến 10 là 1, 2, 3, 4, 6 và tổng của chúng là 16.
Giải bài toán bằng C++: Tính tổng các ước của M trong đoạn 1 đến N
Hiểu rõ bài toán
  • Input: Hai số nguyên dương M và N (N ≤ M).
  • Output: Tổng các số là ước của M trong khoảng từ 1 đến N.
  • Yêu cầu: Sử dụng vòng lặp while trong C++.
Phân tích và thuật toán
  1. Nhập dữ liệu: Nhập hai số nguyên dương M và N từ bàn phím.
  2. Khởi tạo biến:
    • sum: Biến để lưu trữ tổng các ước tìm được, khởi tạo bằng 0.
    • i: Biến đếm, khởi tạo bằng 1.
  3. Vòng lặp while:
    • Điều kiện: i <= N
    • Thân vòng lặp:
      • Nếu M chia hết cho i (nghĩa là i là ước của M) thì cộng i vào sum.
      • Tăng i lên 1.
  4. In kết quả: In ra giá trị của sum.
Mã C++
C++
#include <iostream> using namespace std; int main() { int M, N, i, sum = 0; // Nhập dữ liệu cout << "Nhap M, N (N <= M): "; cin >> M >> N; // Kiểm tra điều kiện N <= M if (N > M) { cout << "Nhap sai! N phai nho hon hoac bang M." << endl; return 1; } // Tính tổng các ước của M trong đoạn 1 đến N i = 1; while (i <= N) { if (M % i == 0) { sum += i; } i++; } // In kết quả cout << "Tong cac uoc cua " << M << " trong doan 1 den " << N << " la: " << sum << endl; return 0; }
Hãy thận trọng khi sử dụng các đoạn mã.

Giải thích mã
  • Dòng 1-2: Thư viện iostream cho phép nhập xuất dữ liệu.
  • Dòng 4-5: Khai báo các biến cần thiết.
  • Dòng 7-10: Nhập dữ liệu và kiểm tra điều kiện N ≤ M.
  • Dòng 12-17: Vòng lặp while để duyệt qua các số từ 1 đến N.
  • Dòng 13-14: Kiểm tra xem i có phải là ước của M không và cộng vào tổng nếu đúng.
  • Dòng 18-19: In kết quả ra màn hình.

Với input M = 12, N = 10, chương trình sẽ in ra kết quả là 16 vì các ước của 12 trong đoạn 1 đến 10 là 1, 2, 3, 4, 6 và tổng của chúng là 16.

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
0
0
Duy Lê
07/09 15:20:39
+4đ tặng
#include <iostream>
using namespace std; i
nt main() {
int M, N, t />// Nhập dữ liệu
cout << "Nhap M: "; cin >> M;
cout << "Nhap N (N <= M): ";
cin >> N;
// Kiểm tra điều kiện N <= M
while (N > M) {
cout << "N phai nho hon hoac bang M. Nhap lai N: ";
cin >> N; }
// Tính tổng các ước của M từ 1 đến N
int i = 1; while (i <= N) { i
f (M % i == 0) { tong += i; } i++; }
// In kết quả
cout << "Tong cac uoc cua " << M << " trong doan tu 1 den " << N << " la: " << tong << endl;
return 0; }
Duy Lê
chấm nhé tớ mới học C++ đc gần 1 tháng thôi nên sai ib tớ ạ

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
×