首頁 >後端開發 >C++ >找出在質數位置上的字元的ASCII值的總和

找出在質數位置上的字元的ASCII值的總和

PHPz
PHPz轉載
2023-09-11 20:29:12650瀏覽

找出在質數位置上的字元的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() − 這個函式庫函數在數學函式庫中定義,它傳回輸入數字的平方根

#
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

Example 2

的翻譯為:

範例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()函式庫函數傳回字串的長度。

以上是找出在質數位置上的字元的ASCII值的總和的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:tutorialspoint.com。如有侵權,請聯絡admin@php.cn刪除