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

นับจำนวนจากช่วงที่มีตัวประกอบเฉพาะเพียง 2 และ 3 ใน C++


เรามีหมายเลข 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