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

นับตัวเลขในช่วง 1 ถึง N ซึ่งหารด้วย X ลงตัวแต่ไม่หารด้วย Y ใน C++


เราได้รับหมายเลข N เป้าหมายคือการค้นหาตัวเลขที่หารด้วย X ลงตัว ไม่ใช่ Y และอยู่ในช่วง [1,N]

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

ป้อนข้อมูล

N=20 X=5 Y=20

ผลผลิต

Numbers from 1 to N divisible by X not Y: 2

คำอธิบาย

Only 5 and 15 are divisible by 5 and not 10.

ป้อนข้อมูล

N=20 X=4 Y=7

ผลผลิต

Numbers from 1 to N divisible by X not Y: 5

คำอธิบาย

Numbers 4, 8, 12, 16 and 20 are divisible by 4 and not 7.

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

  • เราหาจำนวนเต็ม N.

  • ฟังก์ชัน divisibleXY(int x, int y, int n) คืนค่าจำนวนตัวเลขตั้งแต่ 1 ถึง N ซึ่งหารด้วย X ลงตัว ไม่ใช่ Y

  • ใช้ตัวแปรเริ่มต้นนับเป็น 0 สำหรับตัวเลขดังกล่าว

  • ข้ามช่วงของตัวเลขโดยใช้การวนซ้ำ i=1 ถึง i=n

  • ตอนนี้สำหรับแต่ละตัวเลข i ให้ตรวจสอบว่า ( i%x==0 &&i%y!=0 ) นับการเพิ่มขึ้นจริงหรือไม่

  • คืนค่าการนับเป็นผลลัพธ์

ตัวอย่าง

#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 <<"Numbers from 1 to N which are divisible by X and not Y: "<< divisibleXY(X,Y,N);
   return 0;
}

ผลลัพธ์

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

Numbers from 1 to N which are divisible by X and not Y: 12