给定大小为N的字符串str ,任务是找到出现在素数位置的字符的所有ASCII值的总和。
例子:
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
方法:一种有效的方法是遍历整个字符串并确定特定位置是否为质数。如果当前字符的位置是首要然后添加字符到答案的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