C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

C++の配列内のすべての素数の積


いくつかの要素を持つ整数配列arr[]が与えられた場合、タスクはその数のすべての素数の積を見つけることです。

素数は、1で割った数、またはその数自体です。または、素数は、1とその数自体を除いて他の数で割り切れない数です。 1、2、3、5、7、11など

与えられた配列の解を見つける必要があります-

C++の配列内のすべての素数の積

入力 −arr [] ={11、20、31、4、5、6、70}

出力 − 1705

説明 −配列の素数は− 11、31、5であり、それらの積は1705

入力 − arr [] ={1、2、3、4、5、6、7}

出力 − 210

説明 −配列の素数は− 1、2、3、5、7であり、それらの積は210

問題を解決するために以下で使用するアプローチは次のとおりです

  • 入力配列arr[]を取得します。

  • すべての要素をループして、それが素数であるかどうかを確認します。

  • 現在のすべての素数を配列で生成します。

  • 製品を返品してください。

アルゴリズム

Start
In function int prodprimearr(int arr[], int n)
   Step 1→ Declare and initialize max_val as max_val *max_element(arr, arr + n)
   Step 2→ Declare vector<bool> isprime(max_val + 1, true)
   Step 3→ Set isprime[0] and isprime[1] as false
   Step 4→ Loop For p = 2 and p * p <= max_val and p++
      If isprime[p] == true then,
         Loop For i = p * 2 and i <= max_val and i += p
            Set isprime[i] as false
   Step 5→ Set prod as 1
   Step 6→ For i = 0 and i < n and i++
      If isprime[arr[i]]
         Set prod = prod * arr[i]
   Step 6→ Return prod
In function int main(int argc, char const *argv[])
   Step 1→ Declare and initilalize arr[] = { 11, 20, 31, 4, 5, 6, 70 }
   Step 2→ Declare and initialize n = sizeof(arr) / sizeof(arr[0])
   Step 3→ Print the results of prodprimearr(arr, n)
Stop

#include <bits/stdc++.h>
using namespace std;
int prodprimearr(int arr[], int n){
   // To find the maximum value of an array
   int max_val = *max_element(arr, arr + n);
   // USE SIEVE TO FIND ALL PRIME NUMBERS LESS
   // THAN OR EQUAL TO max_val
   vector<bool> isprime(max_val + 1, true);
   isprime[0] = false;
   isprime[1] = false;
   for (int p = 2; p * p <= max_val; p++) {
      // If isprime[p] is not changed, then
      // it is a prime
      if (isprime[p] == true) {
         // Update all multiples of p
         for (int i = p * 2; i <= max_val; i += p)
            isprime[i] = false;
      }
   }
   // Product all primes in arr[]
   int prod = 1;
   for (int i = 0; i < n; i++)
      if (isprime[arr[i]])
         prod *= arr[i];
      return prod;
}
int main(int argc, char const *argv[]){
   int arr[] = { 11, 20, 31, 4, 5, 6, 70 };
   int n = sizeof(arr) / sizeof(arr[0]);
   cout << prodprimearr(arr, n);
   return 0;
}

出力

上記のコードを実行すると、次の出力が生成されます-

1705

  1. 数値の配列の積の最初の桁を見つけるC++プログラム

    この記事では、指定された配列の要素の積の最初の桁を見つけるプログラムについて説明します。 たとえば、配列が与えられたとしましょう。 arr = {12, 5, 16} その場合、これらの要素の積は12 * 5 * 16 =960になります。したがって、結果、つまりこの場合の積の最初の桁は9になります。 例 #include <bits/stdc++.h> using namespace std; int calc_1digit(int arr[], int x) {    long long int prod = 1;    for(in

  2. STLを使用したC++の配列製品

    これは、配列製品を見つけるためのC++プログラムの例です。 アルゴリズム Begin Initialize the values of array. Call used defined function accumulate to return the product of array. Print the solution. End. サンプルコード #include <iostream> #include <numeric> using namespace std; int ProductOfArray(int p[], int n) { &nbs