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

นับจำนวนลำดับย่อยด้วย GCD 1 ใน C++


เราได้รับอาร์เรย์ขององค์ประกอบจำนวนเต็มและภารกิจคือการค้นหาลำดับย่อยจากอาร์เรย์ที่กำหนดซึ่งมี GCD เป็น 1 GCD เป็นตัวหารร่วมมากของสองตัวหรือมากกว่า จำนวนเต็มที่หารจำนวนที่กำหนดทั้งหมดและมากที่สุดในบรรดาทั้งหมด

ป้อนข้อมูล − int arr[] ={3, 4, 8, 16}

ผลผลิต − จำนวนลำดับย่อยด้วย GCD 1 คือ − 7

คำอธิบาย

ลำดับย่อยที่สามารถเกิดขึ้นได้จากอาร์เรย์ที่กำหนดด้วย GCD เป็น 1 คือ (3, 4), (3, 8) (3, 16), (4, 3), (8, 3), (16, 3), (3, 4, 8)

ป้อนข้อมูล − int arr[] ={5, 7, 10}

ผลผลิต − จำนวนลำดับย่อยด้วย GCD 1 คือ − 3

คำอธิบาย

ลำดับย่อยที่สามารถเกิดขึ้นได้จากอาร์เรย์ที่กำหนดด้วย GCD เป็น 1 คือ (5, 7), (7, 10), (5, 7, 10)

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

  • ป้อนอาร์เรย์ขององค์ประกอบจำนวนเต็มทุกขนาดที่กำหนด

  • คำนวณขนาดของอาร์เรย์และส่งข้อมูลไปยังฟังก์ชันเพื่อการประมวลผลต่อไป

  • ประกาศการนับตัวแปรชั่วคราวเพื่อเก็บการนับของลำดับย่อยด้วย GCD เป็น 1

  • เริ่มการวนซ้ำ FOR จาก i ถึง 0 จนถึงขนาดของอาร์เรย์

  • ภายในลูปเริ่มลูปอื่น FOR จาก j ถึง 0 จนถึงขนาดของอาร์เรย์

  • ภายในลูป ให้ตรวจสอบ IF GCD(arr[i], arr[j]) =TRUE จากนั้นให้เพิ่มจำนวนขึ้น 1

  • จำนวนคืน

  • พิมพ์ผลลัพธ์

ตัวอย่าง

# include <bits/stdc++.h>
using namespace std;
int gcd(int a, int b){
   if (a == 0)
      return b;
   return gcd(b % a, a);
}
int GCD_1(int arr[],int size){
   int count = 0;
   for(int i=0;i<size;i++){
      for(int j=0;j<=size;j++){
         if(gcd(arr[i],arr[j])==1){
            count++;
         }
      }
   }
   return count;
}
int main(){
   int arr[] = {3, 4, 8, 16};
   int size = sizeof(arr)/sizeof(arr[0]);
   cout<<"Count of number of sub-sequences with GCD 1 are: "<<GCD_1(arr, size);
   return 0;
}

ผลลัพธ์

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

Count of number of sub-sequences with GCD 1 are: 7