Cho một mảng arr [n] gồm n số nguyên, nhiệm vụ là tìm tích của tất cả các số tổng hợp trong một mảng.
Hợp số là số nguyên được lập bằng cách nhân 2 số nguyên khác. Ví dụ 6 là một số tổng hợp có thể được thực hiện bằng cách nhân 2 và 3 là các số nguyên. Ngoài ra, chúng ta có thể nói rằng chúng không phải là nguyên tố.
Đầu vào
arr[] = {1, 2, 4, 5, 6, 7}
Đầu ra
24
Giải thích - các số tổng hợp trong mảng là 4 và 6 và tích của chúng là 24.
Đầu vào
arr[] = {10, 2, 4, 5, 6, 11}
Đầu ra
240
Giải thích - các số tổng hợp trong mảng là 10, 4, 6 và Sản phẩm của chúng là 240.
Phương pháp tiếp cận được sử dụng dưới đây như sau để giải quyết vấn đề
-
Lặp lại mọi phần tử của một mảng.
-
Tìm các số không phải là số nguyên tố hoặc hợp số, tức là chia hết cho một số khác trừ 1.
-
Nhân tất cả các số tổng hợp.
-
Trả lại kết quả.
Thuật toán
Start Step 1→ Declare function to find the product of consecutive numbers in array int product_arr(int arr[], int size) declare int max = *max_element(arr, arr + size) set vector<bool> prime(max + 1, true) set prime[0] = true set prime[1] = true Loop For int i = 2 and i * i <= max and i++ IF (prime[i] == true) Loop For int j = i * 2 and j <= max and j += i Set prime[j] = false End End End Set int product = 1 Loop For int i = 0 and i < size and i++ IF (!prime[arr[i]]) Set product *= arr[i] End End return product Stop
Ví dụ
#include <bits/stdc++.h> using namespace std; //function to find product of consecutive numbers in an array int product_arr(int arr[], int size){ int max = *max_element(arr, arr + size); vector<bool> prime(max + 1, true); prime[0] = true; prime[1] = true; for (int i = 2; i * i <= max; i++){ if (prime[i] == true){ for (int j = i * 2; j <= max; j += i) prime[j] = false; } } int product = 1; for (int i = 0; i < size; i++) if (!prime[arr[i]]){ product *= arr[i]; } return product; } int main(){ int arr[] = { 2, 4, 6, 8, 10}; int size = sizeof(arr) / sizeof(arr[0]); cout<<"product of consecutive numbers in an array: "<<product_arr(arr, size); return 0; }
Đầu ra
Nếu chạy đoạn mã trên, nó sẽ tạo ra kết quả sau -
product of consecutive numbers in an array: 1920