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

C++ですべてのプライムレングスのパリンドローム部分文字列をカウントします


このチュートリアルでは、素数のパリンドローム文字列の数を見つけるプログラムについて説明します。

このために、文字列が提供されます。私たちのタスクは、パリンドロームでプライムレングスのすべてのサブストリングをカウントすることです。

#include <bits/stdc++.h>
using namespace std;
//checking for a palindrome
bool if_palin(string str, int i, int j){
   while (i < j) {
      if (str[i] != str[j])
         return false;
      i++;
      j--;
   }
   return true;
}
//counting palindrome with prime length
int count_prime(string str, int len){
   bool prime[len + 1];
   memset(prime, true, sizeof(prime));
   prime[0] = prime[1] = false;
   for (int p = 2; p * p <= len; p++) {
      if (prime[p]) {
         for (int i = p * p; i <= len; i += p)
            prime[i] = false;
      }
   }
   int count = 0;
   for (int j = 2; j <= len; j++) {
      if (prime[j]) {
         for (int i = 0; i + j - 1 < len; i++) {
            if (if_palin(str, i, i + j - 1))
               count++;
         }
      }
   }
   return count;
}
int main(){
   string s = "abccc";
   int len = s.length();
   cout << count_prime(s, len);
   return 0;
}

出力

3

  1. C++の範囲で素数を数える

    範囲変数STARTとENDが与えられます。目標は、[START、END]の範囲の素数の数を見つけることです。 1以外の数がそれを完全に分割し、1とi / 2の間にあるかどうかをチェックすることにより、範囲内の数iが素数であるかどうかをチェックします。素数の場合。インクリメントカウント。 例を挙げて理解しましょう。 入力 Start=1 End=20 出力 Primes in Ranges : 8 説明 Primes between 1 and 20 are: 2,3,5,7,11,13,17,19. 入力 Start=100 End=200 出力 Primes in R

  2. 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