เราได้รับอาร์เรย์ของขนาดใดๆ ที่มีองค์ประกอบจำนวนเต็ม และภารกิจคือการคำนวณจำนวนคู่ในอาร์เรย์เพื่อให้องค์ประกอบหนึ่งของคู่แบ่งองค์ประกอบอื่นของคู่
อาร์เรย์ประเภทโครงสร้างข้อมูลที่สามารถจัดเก็บคอลเล็กชันแบบต่อเนื่องที่มีขนาดคงที่ขององค์ประกอบประเภทเดียวกัน อาร์เรย์ใช้เพื่อจัดเก็บชุดข้อมูล แต่มักจะมีประโยชน์มากกว่าที่จะคิดว่าอาร์เรย์เป็นชุดของตัวแปรประเภทเดียวกัน
ตัวอย่าง
Input − int arr[] = {1, 2, 3, 6}
Output − count is 4 คำอธิบาย − (1,2), (1,3), (1,6) และ (3,6) เป็นคู่ที่องค์ประกอบหนึ่งของคู่หารอีกคู่เป็น 1 สามารถหารจำนวนใด ๆ และ 3 หาร 6 ด้วย ดังนั้น นับเป็น 4
Input − int arr[] = {2, 5, 10}
Output − count is 2 คำอธิบาย − (2, 10) และ (5,10) คือคู่ที่องค์ประกอบหนึ่งของคู่หารอีกคู่หนึ่ง เนื่องจาก 2 สามารถหาร 10 และ 5 สามารถหาร 10 ได้เช่นกัน ดังนั้นการนับคือ 2
แนวทางที่ใช้ในโปรแกรมด้านล่างมีดังนี้
-
สร้างอาร์เรย์ สมมุติว่า arr[]
-
คำนวณความยาวของอาร์เรย์โดยใช้ฟังก์ชัน length() ที่จะคืนค่าจำนวนเต็มตามองค์ประกอบในอาร์เรย์
-
ใช้ตัวแปรชั่วคราวที่จะเก็บจำนวนองค์ประกอบที่มีอยู่ในอาร์เรย์เท่านั้น
-
เริ่มวนรอบด้วย i ถึง 0 และฉันน้อยกว่าขนาดของอาร์เรย์
-
ภายในลูปเริ่มลูปใหม่ด้วย j ถึง i+1 จนถึง j น้อยกว่าขนาด
-
ภายในลูปตรวจสอบว่า arr[i] % arr[j] =0 หรือ arr[j] % arr[i] =0 แล้วเพิ่มการนับ
-
คืนจำนวน
-
พิมพ์ผลลัพธ์
ตัวอย่าง
#include <iostream>
using namespace std;
int divisibles(int a[], int size){
int result = 0;
// Iterating through all pairs
for (int i=0; i<size; i++){
for (int j=i+1; j<size; j++){
if (a[i] % a[j] == 0 || a[j] % a[i] == 0){
result++;
}
}
}
return result;
}
int main(){
int a[] = {1, 4, 7, 8, 9};
int size = sizeof(a) / sizeof(a[0]);
cout <<"count is " <<divisibles(a, size);
return 0;
} ผลลัพธ์
หากเราเรียกใช้โค้ดข้างต้น เราจะได้ผลลัพธ์ดังต่อไปนี้ -
count is 5