Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

นับตัวหารทั้งหมดของ A หรือ B ในช่วงที่กำหนดใน C++


เราได้รับสี่จำนวนเต็ม L, R, A และ B เป้าหมายคือการหาจำนวนตัวเลขในช่วง [L,R] ที่หาร A หรือ B หรือทั้งสองอย่างได้ทั้งหมด

เราจะทำสิ่งนี้โดยข้ามจาก L ไป R และสำหรับแต่ละตัวเลขถ้า number%A==0 หรือ number%B==0 ให้นับตัวหารเพิ่มขึ้น

มาทำความเข้าใจกับตัวอย่างกัน

ป้อนข้อมูล − L=10, R=15, A=4, B=3

ผลผลิต − การนับตัวหารของ A หรือ B − 2

คำอธิบาย

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

ป้อนข้อมูล − L=20, R=30, A=17, B=19

ผลผลิต − การนับตัวหารของ A หรือ B − 0

คำอธิบาย − ไม่มีตัวเลขระหว่าง 20 ถึง 30 ที่หารด้วย A หรือ B ลงตัว หรือทั้งสองอย่าง

แนวทางที่ใช้ในโปรแกรมด้านล่างมีดังนี้

  • เราได้นำตัวแปร A, B, L และ R มา 4 ตัว

  • ฟังก์ชัน countDivisors(int l, int r, int a, int b) รับทั้งหมดเป็นอินพุตและส่งกลับตัวหารของ A หรือ B หรือทั้งสองอย่างอยู่ในช่วง [L, R]

  • นับเริ่มต้นเป็น 0

  • เริ่มจาก i=L ถึง i=R ถ้า i%a==0 หรือ i%b==0 นับการเพิ่มขึ้น

  • เมื่อสิ้นสุดลูปให้นับเป็นตัวหารของ A หรือ B

  • ผลตอบแทนนับเป็นผลลัพธ์

ตัวอย่าง

#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;
}

ผลลัพธ์

หากเราเรียกใช้โค้ดข้างต้น มันจะสร้างผลลัพธ์ต่อไปนี้ -

Total divisors of A and B : 7