📜  找出出现在素数位置的字符的ascii值之和

📅  最后修改于: 2021-04-29 02:03:31             🧑  作者: Mango

给定大小为N的字符串str ,任务是找到出现在素数位置的字符的所有ASCII值的总和。

例子:

方法:一种有效的方法是遍历整个字符串并确定特定位置是否为质数。如果当前字符的位置是首要然后添加字符到答案的ASCII值。

下面是上述方法的实现:

C++
// C++ implementation of the approach
#include 
using namespace std;
  
// Function that returns true
// if n is prime
bool isPrime(int n)
{
    if (n == 0 || n == 1)
        return false;
    for (int i = 2; i * i <= n; i++)
        if (n % i == 0)
            return false;
  
    return true;
}
  
// Function to return the sum
// of the ascii values of the characters
// which are present at prime positions
int sumAscii(string str, int n)
{
    // To store the sum
    int sum = 0;
  
    // For every character
    for (int i = 0; i < n; i++) {
  
        // If current position is prime
        // then add the ASCII value of the
        // character at the current position
        if (isPrime(i + 1))
            sum += (int)(str[i]);
    }
  
    return sum;
}
  
// Driver code
int main()
{
    string str = "geeksforgeeks";
    int n = str.size();
  
    cout << sumAscii(str, n);
  
    return 0;
}


Java
// Java implementation of the approach
import java.util.*;
  
class GFG 
{
  
    // Function that returns true
    // if n is prime
    static boolean isPrime(int n)
    {
        if (n == 0 || n == 1)
        {
            return false;
        }
        for (int i = 2; i * i <= n; i++) 
        {
            if (n % i == 0) 
            {
                return false;
            }
        }
  
        return true;
    }
  
    // Function to return the sum
    // of the ascii values of the characters
    // which are present at prime positions
    static int sumAscii(String str, int n) 
    {
        // To store the sum
        int sum = 0;
  
        // For every character
        for (int i = 0; i < n; i++) 
        {
  
            // If current position is prime
            // then add the ASCII value of the
            // character at the current position
            if (isPrime(i + 1)) 
            {
                sum += (int) (str.charAt(i));
            }
        }
  
        return sum;
    }
  
    // Driver code
    public static void main(String[] args)
    {
        String str = "geeksforgeeks";
        int n = str.length();
  
        System.out.println(sumAscii(str, n));
    }
}
  
// This code contributed by Rajput-Ji


Python3
# Python3 implementation of the approach 
  
from math import sqrt
  
# Function that returns true 
# if n is prime 
def isPrime(n) : 
      
    if (n == 0 or n == 1) :
        return False;
          
    for i in range(2, int(sqrt(n)) + 1) :
        if (n % i == 0):
            return False; 
  
    return True; 
  
  
# Function to return the sum 
# of the ascii values of the characters 
# which are present at prime positions 
def sumAscii(string, n) : 
  
    # To store the sum 
    sum = 0; 
  
    # For every character 
    for i in range(n) :
  
        # If current position is prime 
        # then add the ASCII value of the 
        # character at the current position 
        if (isPrime(i + 1)) : 
            sum += ord(string[i]); 
  
    return sum; 
  
  
# Driver code 
if __name__ == "__main__" : 
  
    string = "geeksforgeeks"; 
    n = len(string); 
  
    print(sumAscii(string, n)); 
  
# This code is contributed by AnkitRai01


C#
// C# implementation of the approach
using System;
  
class GFG 
{
  
    // Function that returns true
    // if n is prime
    static bool isPrime(int n)
    {
        if (n == 0 || n == 1)
        {
            return false;
        }
          
        for (int i = 2; i * i <= n; i++) 
        {
            if (n % i == 0) 
            {
                return false;
            }
        }
  
        return true;
    }
  
    // Function to return the sum
    // of the ascii values of the characters
    // which are present at prime positions
    static int sumAscii(string str, int n) 
    {
        // To store the sum
        int sum = 0;
  
        // For every character
        for (int i = 0; i < n; i++) 
        {
  
            // If current position is prime
            // then add the ASCII value of the
            // character at the current position
            if (isPrime(i + 1)) 
            {
                sum += (int) (str[i]);
            }
        }
  
        return sum;
    }
  
    // Driver code
    public static void Main()
    {
        string str = "geeksforgeeks";
        int n = str.Length;
  
        Console.WriteLine(sumAscii(str, n));
    }
}
  
// This code contributed by anuj_67..


输出:
644