เราได้รับอาร์เรย์ขององค์ประกอบจำนวนเต็มและภารกิจคือการค้นหาลำดับย่อยจากอาร์เรย์ที่กำหนดซึ่งมี 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