เราได้รับหมายเลข 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