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

Lập chương trình tìm số có nhiều ước trong mảng a[i] ở ngôn ngữ lập trình C++

lập chương trình tìm số có nhiều ước trong mảng a[i] ở ngôn ngữ lập trình c++
1 Xem trả lời
Hỏi chi tiết
135
Tham khảo câu trả lời từ Trợ lý ảo Lazi
Để lập trình tìm số có nhiều ước nhất trong mảng `a[i]` bằng ngôn ngữ lập trình C++, bạn có thể làm theo các bước sau:

1. Tạo một hàm để đếm số ước của một số.
2. Duyệt qua từng phần tử của mảng để tìm số có nhiều ước nhất.

Dưới đây là một ví dụ cụ thể:

```cpp
#include
#include
#include

// Hàm đếm số ước của một số n
int countDivisors(int n) {
int count = 0;
for (int i = 1; i <= std::sqrt(n); ++i) {
if (n % i == 0) {
if (i == n / i) {
count += 1; // Nếu i là căn bậc hai của n
} else {
count += 2; // Nếu i và n/i là hai ước khác nhau
}
}
}
return count;
}

int main() {
// Khởi tạo mảng a
std::vector a = {12, 18, 6, 24, 36};

int maxDivisors = 0;
int numberWithMaxDivisors = a[0];

// Duyệt qua từng phần tử của mảng
for (int i = 0; i < a.size(); ++i) {
int divisors = countDivisors(a[i]);
if (divisors > maxDivisors) {
maxDivisors = divisors;
numberWithMaxDivisors = a[i];
}
}

std::cout << "So co nhieu uoc nhat la: " << numberWithMaxDivisors << " voi " << maxDivisors << " uoc." << std::endl;

return 0;
}
```

Giải thích:
1. Hàm `countDivisors(int n)` đếm số ước của số `n` bằng cách duyệt từ 1 đến căn bậc hai của `n`. Nếu `i` là ước của `n`, thì `n/i` cũng là ước của `n`.
2. Trong hàm `main()`, chúng ta khởi tạo mảng `a` và duyệt qua từng phần tử của mảng để tìm số có nhiều ước nhất.
3. Biến `maxDivisors` lưu trữ số lượng ước lớn nhất tìm được, và `numberWithMaxDivisors` lưu trữ số có nhiều ước nhất.

Chạy chương trình này sẽ cho bạn biết số nào trong mảng có nhiều ước nhất và số lượng ước của nó.
0
0
Võ Tuấn Tài
21/06 09:01:07
+5đ tặng
#include <iostream>
#include <vector>

// Hàm tính số ước của một số nguyên dương
int countDivisors(int num) {
    int count = 0;
    for (int i = 1; i <= num; i++) {
        if (num % i == 0) {
            count++;
        }
    }
    return count;
}

int main() {
    std::vector<int> arr = {10, 15, 8, 12}; // Mảng a[i] cần kiểm tra

    int maxDivisors = 0;
    int result = -1;

    for (int i = 0; i < arr.size(); i++) {
        int divisors = countDivisors(arr[i]);
        if (divisors > maxDivisors) {
            maxDivisors = divisors;
            result = arr[i];
        }
    }

    if (result != -1) {
        std::cout << "Số có nhiều ước nhất trong mảng là: " << result << std::endl;
    } else {
        std::cout << "Không có số nào trong mảng." << std::endl;
    }

    return 0;
}

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

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
×