查詢位於素數位置的字元的ASCII值之和


介紹

在本教程中,我們將學習C++的概念,以查詢位於素數位置的字元的ASCII值之和。素數位置是指位置為2、3、5或其他素數的字元。

ASCII(美國資訊交換標準程式碼)值為字母、數字、標點符號和其他字元在編碼中使用的唯一數值。它用於與計算機通訊,因為計算機不理解人類語言。

共有128個ASCII值,從0到127。大寫字母和小寫字母具有不同的ASCII值。

我們將開發一個C++程式碼來計算位於素數位置的字元的ASCII值。我們使用字串類的length()函式來儲存輸入字串的長度。

示例1

There is an string = “Hello”
Sum of prime position ASCII value characters = 320
In the above string “Hello” the ASCII value of each character is 
H =  72
e = 101
l = 108
l = 108
o = 111

位於素數位置的字元是“e”、“l”、“o”。新增這些素數位置字元的ASCII值。

示例2

Input string = “abcd”
Sum = 197

輸入字串“abcd”中位於素數位置的字元是“b”和“c”。

The ASCII value of input string characters is as listed:
a = 97
b = 98
c = 99
d = 100

計算字串中位於素數位置的字元的ASCII值之和。

語法

  • sqrt() − 此庫函式在math庫中定義,它返回輸入數字的平方根。

sqrt(n)
  • length() − 此字串類庫函式返回輸入字串的長度,長度是字串中字元的數量。

string_name.length(); 

示例1

我們將使用C++程式語言實現一個示例,以計算輸入字串中位於素數位置的字元的ASCII值之和。C++程式碼輸入字串為“Hello”。我們首先透過應用識別素數的邏輯來查詢輸入字串的所有素數位置。使用for迴圈查詢輸入字串所有字元的ASCII值。將位於素數位置的輸入字串字元的ASCII值相加。

#include <iostream>
#include <string>
#include <vector>

using namespace std;

// User-defined function to find the prime positions 
bool find_prime(int p){
   if (p <= 1) {
      return false;
   }
   // loop to check the prime number
   for (int x = 2; x*x <= p; x++) {
      if (p % x == 0) {
         return false;
      }
   }
   return true;
}

// user-defined function to sum ASCII values of the prime position characters 
int sum_of_primes(string st) {
   int sum1 = 0;
   
   //variable to store the input string length.
   int p = st.length();
   vector<bool> primes(p+1, false);
   primes[2] = true;
   for (int x = 3; x <= p; x += 2) {
      primes[x] = find_prime(x);
   }
   for (int x = 2; x <= p; x++){
      if (primes[x] && x <= p){
         sum1 += int(st[x-1]);
      }
   }
   return sum1;
}

// controlling code
int main(){
   string st = "Hello";
   int sum1 = sum_of_primes(st);
   cout << "Sum of ASCII values of characters at prime positions: " << sum1 << endl;
   return 0;
}

輸出

"Sum of ASCII values of characters at prime positions: 320

示例2

在這裡,我們使用不同的邏輯來實現此示例。我們首先找到素數位置,然後在main()中找到這些ASCII值並將其相加。

#include <iostream>
#include <cmath>
using namespace std;

bool isNumPrime(int n) {
   if (n < 2)
      return false;
   for (int x = 2; x <= sqrt(n); ++x) {
      if (n % x == 0)
         return false;
   }
   return true;
}

int main() {
   string str = "tutorialspoint";
   //std::cout << "Enter a string: ";
    
   int s = 0;
   for (size_t x = 0; x < str.length(); ++x) {
      if (isNumPrime(x + 1)) {
         s += static_cast<int>(str[x]);
      }
   }
   cout << "Sum of ASCII values at prime positions: " << s << endl;
   return 0;
}

輸出

Sum of ASCII values at prime position: 665

結論

在本教程中,我們開發了C++程式碼來查詢素數位置字元的ASCII值之和。我們使用字串類的length()函式來查詢引數字串的長度。ASCII值是字母和其他字元的預定值,以幫助計算機進行通訊。在本教程中,我們使用不同的邏輯實現了兩個示例,並使用了一些C++庫函式。使用的最重要的庫函式是length()。此length()庫函式返回字串的長度。

更新於:2023年8月1日

瀏覽量:399

開啟你的職業生涯

完成課程後獲得認證

開始學習
廣告
© . All rights reserved.