เรามีหมายเลข START และ END สองหมายเลขเพื่อกำหนดช่วงของตัวเลข เป้าหมายคือการหาตัวเลขที่มีเพียง 2 และ 3 เป็นปัจจัยเฉพาะและอยู่ในช่วง [START,END]
เราจะทำสิ่งนี้โดยข้ามผ่านตัวเลขจาก START ถึง END และสำหรับแต่ละหมายเลข เราจะตรวจสอบว่าตัวเลขนั้นหารด้วย 2 และ 3 เท่านั้นหรือไม่ ถ้าแบ่งให้แบ่งลด ถ้าไม่ ให้ทำลายลูป ในท้ายที่สุดถ้าจำนวนลดลงเหลือ 1 ก็จะมีเพียง 2 และ 3 เป็นตัวประกอบ
มาทำความเข้าใจกับตัวอย่างกัน
ป้อนข้อมูล
START=20 END=25
ผลผลิต
Numbers with only 2 and 3 as prime factors: 1
คำอธิบาย
Prime factors of each number: 20 = 2*2*5 21 = 3*7 22 = 2*11 23 = 1*23 24 = 2*2*2*3 25 = 5*5 Only 24 has 2 and 3 as prime factors.
ป้อนข้อมูล
START=1000 END=1500
ผลผลิต
Numbers with only 2 and 3 as prime factors: 4
คำอธิบาย
1024 1152 1296 1458 are the numbers with only 2 and 3 as prime factors
แนวทางที่ใช้ในโปรแกรมด้านล่างมีดังนี้
-
เราใช้จำนวนเต็ม START และ END เป็นตัวแปรช่วง
-
ฟังก์ชัน twothreeFactors(int start, int end) รับตัวแปรช่วงและคืนค่าการนับจำนวนด้วย 2 และ 3 เป็นปัจจัยเฉพาะเท่านั้น
-
ใช้ตัวแปรเริ่มต้นนับเป็น 0 สำหรับตัวเลขดังกล่าว
-
ข้ามช่วงของตัวเลขโดยใช้การวนซ้ำ i=start to i=end
-
ตอนนี้สำหรับแต่ละตัวเลข num=i ใช้ while loop ตรวจสอบว่า num%2==0, หารหรือไม่
-
ถ้า num%3==0, หารด้วย ถ้าไม่ใช่ทั้ง 2 ให้ทำลาย while loop
-
หากหลังจาก while วนเป็น 1 ให้เพิ่มจำนวน
-
เมื่อสิ้นสุดลูปทั้งหมด การนับจะมีจำนวนรวมที่มีเพียง 2 และ 4 เป็นตัวประกอบเฉพาะ
-
คืนค่าการนับเป็นผลลัพธ์
ตัวอย่าง
#include <bits/stdc++.h> using namespace std; int twothreeFactors(int start, int end){ // Start with 2 so that 1 doesn't get counted if (start == 1) { start++; } int count = 0; for (int i = start; i <= end; i++) { int num = i; while(num>1){ // if divisible by 2, divide it by 2 if(num % 2 == 0) { num /= 2; } // if divisible by 3, divide it by 3 else if (num % 3 == 0) { num /= 3; } else //if divisible by neither 2 nor 3 break { break; } } // means only 2 and 3 are factors of num if (num == 1) { count++; } } return count; } int main(){ int START = 10, END = 20; cout <<"Numbers with only 2 and 3 as prime factors:"<< twothreeFactors(START,END); return 0; }
ผลลัพธ์
หากเราเรียกใช้โค้ดข้างต้น มันจะสร้างผลลัพธ์ต่อไปนี้ -
Numbers with only 2 and 3 as prime factors:3