Find the sum of the ascii values of characters which are present at prime positions

Given a string str of size N, the task is to find the sum of all ASCII values of the characters which are present at prime positions.

Examples:

Input: str = “abcdef”
Output: 298
‘b’, ‘c’ and ‘e’ are the only characters which are
at prime positions i.e. 2, 3 and 5 respectively.
And sum of their ASCII values is 298.

Input: str = “geeksforgeeks”
Output: 644

Approach: An efficient approach is to traverse through the whole string and find if the particular position is prime or not. If the position of the current character is prime then add the ASCII value of the character to the answer.

Below is the implementation of the above approach:

C++

filter_none

edit
close

play_arrow

link
brightness_4
code

// C++ implementation of the approach
#include <bits/stdc++.h>
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;
}

chevron_right


Java

filter_none

edit
close

play_arrow

link
brightness_4
code

// 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

chevron_right


Python3

filter_none

edit
close

play_arrow

link
brightness_4
code

# 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

chevron_right


C#

filter_none

edit
close

play_arrow

link
brightness_4
code

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

chevron_right


Output:

644


My Personal Notes arrow_drop_up

pawanasipugmailcom

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.



Improved By : Rajput-Ji, vt_m, AnkitRai01