Computer >> Máy Tính >  >> Lập trình >> C ++

Tích của tất cả các Số tổng hợp trong một mảng trong C ++

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