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

配列の非素数と素数の積の絶対差は?


ここでは、配列のすべての素数とすべての非素数の積の絶対差を見つける方法を説明します。この問題を解決するには、数が素数であるかどうかを確認する必要があります。素数性テストの1つの可能な方法は、数値が2からその数値の平方根までの任意の数値で割り切れないことを確認することです。したがって、このプロセスには𝑂(√𝑛)の時間がかかります。次に、製品を入手して、絶対的な違いを見つけてください。

アルゴリズム

diffPrimeNonPrimeProd(arr)

begin
   prod_p := product of all prime numbers in arr
   prod_np := product of all non-prime numbers in arr
   return |prod_p – prod_np|
end

#include <iostream>
#include <cmath>
using namespace std;
bool isPrime(int n){
   for(int i = 2; i<=sqrt(n); i++){
      if(n % i == 0){
         return false; //not prime
      }
   }
   return true; //prime
}
int diffPrimeNonPrimeProd(int arr[], int n) {
   int prod_p = 1, prod_np = 1;
   for(int i = 0; i<n; i++){
      if(isPrime(arr[i])){
         prod_p *= arr[i];
      } else {
         prod_np *= arr[i];
      }
   }
   return abs(prod_p - prod_np);
}
main() {
   int arr[] = { 4, 5, 3, 8, 13, 10};
   int n = sizeof(arr) / sizeof(arr[0]);
   cout << "Difference: " << diffPrimeNonPrimeProd(arr, n);
}

出力

Difference: 125

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

    いくつかの要素を持つ整数配列arr[]が与えられた場合、タスクはその数のすべての素数の積を見つけることです。 素数は、1で割った数、またはその数自体です。または、素数は、1とその数自体を除いて他の数で割り切れない数です。 1、2、3、5、7、11など 与えられた配列の解を見つける必要があります- 入力 −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

  2. Javaの配列の最大素数と最小素数の違い

    問題の説明 すべての要素が1000000未満である整数の特定の配列を使用します。配列内の最大の素数と最小の素数の差を見つけます。 例 Array: [ 1, 2, 3, 4, 5 ] Largest Prime Number = 5 Smallest Prime Number = 2 Difference = 5 - 3 = 2. 解決策 エラトステネスのふるいアプローチを使用します。これは、特定の数よりも小さいすべての素数を見つけるための効率的な方法です。次に、必要な差を得るために最大と最小の素数を計算します。 例 以下は、必要な出力を見つけるためのJavaのプログラムです。 pu