Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Đếm số từ 1 đến N chia hết cho X nhưng không chia hết cho Y trong C++


Cho một số N. Mục tiêu là tìm các số chia hết cho X và không chia hết cho Y trong khoảng [1, N].

Hãy hiểu qua các ví dụ.

Đầu vào

N=20 X=5 Y=20

Đầu ra

Số từ 1 đến N chia hết cho X không Y: 2

Giải thích

Chỉ 5 và 15 chia hết cho 5 và không chia hết cho 10.

Đầu vào

N=20 X=4 Y=7

Đầu ra

Số từ 1 đến N chia hết cho X không Y: 5

Giải thích

Các số 4, 8, 12, 16 và 20 chia hết cho 4 và không chia hết cho 7.

Phương pháp sử dụng trong chương trình dưới đây

  • Nhận số nguyên N.
  • Hàm divisibleXY(int x, int y, int n) trả về số lượng số từ 1 đến N chia hết cho X và không Y.
  • Khởi tạo biến count = 0 cho các số như vậy.
  • Duyệt khoảng số bằng vòng lặp for. i=1 đến i=n.
  • Với mỗi số i, kiểm tra nếu (i%x==0 && i%y!=0), nếu đúng tăng count.
  • Trả về count làm kết quả.

Ví dụ

#include <bits/stdc++.h>
using namespace std;

int divisibleXY(int x, int y, int n) {
    int count = 0;
    for (int i = 1; i <= n; i++) {
        if(i % x == 0 && i % y != 0) {
            count++;
        }
    }
    return count;
}

int main() {
    int N = 100;
    int X = 6, Y = 8;
    cout << "Số từ 1 đến N chia hết cho X và không Y: " << divisibleXY(X, Y, N);
    return 0;
}

Đầu ra

Nếu chạy mã trên sẽ cho kết quả sau:

Số từ 1 đến N chia hết cho X và không Y: 12