Computer >> Máy Tính >  >> Lập trình >> C ++

Đếm tổng số ước của A hoặc B trong một phạm vi nhất định trong C ++


Chúng ta được cung cấp bốn số nguyên L, R, A và B. Mục đích là tìm số lượng các số trong phạm vi [L, R] chia hết cho A hoặc B hoặc cả hai.

Chúng tôi sẽ thực hiện việc này bằng cách chuyển từ L sang R và đối với mỗi số nếu số% A ==0 hoặc số% B ==0 thì số lượng ước tăng dần.

Hãy cùng hiểu với các ví dụ.

Đầu vào - L =10, R =15, A =4, B =3

Đầu ra - Đếm ước của A hoặc B - 2

Giải thích -

Number 12 is fully divisible by 3 and 4.
Number 15 is fully divisible by 3 only.
Total divisors=2

Đầu vào - L =20, R =30, A =17, B =19

Đầu ra - Đếm ước số của A hoặc B - 0

Giải thích - Không có số nào từ 20 đến 30 chia hết cho A hoặc B hoặc cả hai.

Phương pháp tiếp cận được sử dụng trong chương trình dưới đây như sau

  • Chúng tôi đã lấy bốn biến A, B, L và R.

  • Hàm countDivisors (int l, int r, int a, int b) nhận tất cả làm đầu vào và trả về các ước của A hoặc B hoặc cả hai nằm trong phạm vi [L, R].

  • Lấy số lượng ban đầu là 0.

  • Bắt đầu từ i =L đến i =R, nếu i% a ==0 hoặc i% b ==0.

  • Ở cuối vòng lặp được đếm là ước của A hoặc B.

  • Kết quả là số lượt trả lại.

Ví dụ

#include <bits/stdc++.h>
using namespace std;
int countDivisors(int l, int r, int a,int b){
   int count = 0;
   for (int i = l; i <= r; i++){
      if(i%a==0 || i%b==0)
         { count++ ; }
   }
   return count;
}
int main(){
   int L=5;
   int R=15;
   int A=2;
   int B=5;
   cout <<endl<< "Total divisors of A and B : "<<countDivisors(L,R,A,B);
   return 0;
}

Đầu ra

Nếu chúng ta chạy đoạn mã trên, nó sẽ tạo ra kết quả sau -

Total divisors of A and B : 7