Related Articles

# Count strings having sum of ASCII values of characters equal to a Prime or Armstrong Number

• Difficulty Level : Expert
• Last Updated : 05 Jul, 2021

Given an array arr[] of size N containing strings, the task is to count the number of strings having sum of ASCII values of characters equal to an Armstrong Number number or a Prime Number.

Examples:

Input: arr[] = {“hello”, “nace”}
Output:
Number of Armstrong Strings are: 1
Number of Prime Strings are: 0
Explanation: Sum of ASCII values of characters of each string is: {532, 407}, out of which 407 is an Armstrong Number, and none of them is a Prime Number.
Hence, the armstrong valued string is “nace”.

Input: arr[] = {“geeksforgeeks”, “a”, “computer”, “science”, “portal”, “for”, “geeks”}
Output:
Number of Armstrong Strings are: 0
Number of Prime Strings are: 2
Explanation: Sum of ASCII values of characters of each string is: {1381, 97, 879, 730, 658, 327, 527}, out of which 1381 and 97 are Prime Numbers, and none of them is an Armstrong Number.
Hence, prime valued strings are “geeksforgeeks” and “a”.

Approach: This problem can be solved by calculating the ASCII value of each string. Follow the steps below to solve this problem:

Below is the implementation of the above approach:

## C++

 `// C++ program for the above approach``#include ``using` `namespace` `std;` `// Function to check if a``// number is prime number``bool` `isPrime(``int` `num)``{``    ` `    ``// Define a flag variable``    ``bool` `flag = ``false``;` `    ``if` `(num > 1)``    ``{``        ` `        ``// Check for factors of num``        ``for``(``int` `i = 2; i < num; i++)``        ``{``            ` `            ``// If factor is found,``            ``// set flag to True and``            ``// break out of loop``            ``if` `((num % i) == 0)``            ``{``                ``flag = ``true``;``                ``break``;``            ``}``        ``}``    ``}` `    ``// Check if flag is True``    ``if` `(flag)``        ``return` `false``;``    ``else``        ``return` `true``;``}` `// Function to calculate``// order of the number x``int` `order(``int` `x)``{``    ``int` `n = 0;``    ``while` `(x != 0)``    ``{``        ``n = n + 1;``        ``x = x / 10;``    ``}``    ``return` `n;``}` `// Function to check whether the given``// number is Armstrong number or not``bool` `isArmstrong(``int` `x)``{``    ``int` `n = order(x);``    ``int` `temp = x;``    ``int` `sum1 = 0;` `    ``while` `(temp != 0)``    ``{``        ``int` `r = temp % 10;``        ``sum1 = sum1 + ``pow``(r, n);``        ``temp = temp / 10;``    ``}``    ` `    ``// If the condition satisfies``    ``return` `(sum1 == x);``}` `// Function to count``// Armstrong valued strings``int` `count_armstrong(vector li)``{``    ` `    ``// Stores the count of``    ``// Armstrong valued strings``    ``int` `c = 0;` `    ``// Iterate over the list``    ``for``(string ele : li)``    ``{``        ` `        ``// Store the value``        ``// of the string``        ``int` `val = 0;` `        ``// Find value of the string``        ``for``(``char` `che:ele)``            ``val += che;` `        ``// Check if it an Armstrong number``        ``if` `(isArmstrong(val))``            ``c += 1;``    ``}``    ``return` `c;``}` `// Function to count``// prime valued strings``int` `count_prime(vector li)``{``    ` `    ``// Store the count of``    ``// prime valued strings``    ``int` `c = 0;` `    ``// Iterate over the list``    ``for``(string ele:li)``    ``{``        ` `        ``// Store the value``        ``// of the string``        ``int` `val = 0;` `        ``// Find value of the string``        ``for``(``char` `che : ele)``            ``val += che;` `        ``// Check if it``        ``// is a Prime Number``        ``if` `(isPrime(val))``            ``c += 1;``    ``}``    ``return` `c;``}` `// Driver code``int` `main()``{``    ``vector arr = { ``"geeksforgeeks"``, ``"a"``, ``"computer"``,``                           ``"science"``, ``"portal"``, ``"for"``, ``"geeks"``};``    ` `    ``// Function Call``    ``cout << ``"Number of Armstrong Strings are: "``         ``<< count_armstrong(arr) << endl;``    ``cout << ``"Number of Prime Strings are: "``         ``<< count_prime(arr) << endl;``}` `// This code is contributed by mohit kumar 29`

## Java

 `// Java program for the above approach``import` `java.io.*;` `class` `GFG {``    ` `    ``// Function to check if a``    ``// number is prime number``    ``static` `boolean` `isPrime(``int` `num)``    ``{`` ` `        ``// Define a flag variable``        ``boolean` `flag = ``false``;`` ` `        ``if` `(num > ``1``) {`` ` `            ``// Check for factors of num``            ``for` `(``int` `i = ``2``; i < num; i++) {`` ` `                ``// If factor is found,``                ``// set flag to True and``                ``// break out of loop``                ``if` `((num % i) == ``0``) {``                    ``flag = ``true``;``                    ``break``;``                ``}``            ``}``        ``}`` ` `        ``// Check if flag is True``        ``if` `(flag)``            ``return` `false``;``        ``else``            ``return` `true``;``    ``}`` ` `    ``// Function to calculate``    ``// order of the number x``    ``static` `int` `order(``int` `x)``    ``{``        ``int` `n = ``0``;``        ``while` `(x != ``0``) {``            ``n = n + ``1``;``            ``x = x / ``10``;``        ``}``        ``return` `n;``    ``}`` ` `    ``// Function to check whether the given``    ``// number is Armstrong number or not``    ``static` `boolean` `isArmstrong(``int` `x)``    ``{``        ``int` `n = order(x);``        ``int` `temp = x;``        ``int` `sum1 = ``0``;`` ` `        ``while` `(temp != ``0``) {``            ``int` `r = temp % ``10``;``            ``sum1 = sum1 + (``int``)(Math.pow(r, n));``            ``temp = temp / ``10``;``        ``}`` ` `        ``// If the condition satisfies``        ``return` `(sum1 == x);``    ``}`` ` `    ``// Function to count``    ``// Armstrong valued strings``    ``static` `int` `count_armstrong(String[] li)``    ``{`` ` `        ``// Stores the count of``        ``// Armstrong valued strings``        ``int` `c = ``0``;`` ` `        ``// Iterate over the list``        ``for``(String ele : li)``        ``{`` ` `            ``// Store the value``            ``// of the string``            ``int` `val = ``0``;`` ` `            ``// Find value of the string``            ``for``(``char` `che : ele.toCharArray()) val += che;`` ` `            ``// Check if it an Armstrong number``            ``if` `(isArmstrong(val))``                ``c += ``1``;``        ``}``        ``return` `c;``    ``}`` ` `    ``// Function to count``    ``// prime valued strings``    ``static` `int` `count_prime(String[] li)``    ``{`` ` `        ``// Store the count of``        ``// prime valued strings``        ``int` `c = ``0``;`` ` `        ``// Iterate over the list``        ``for``(String ele : li)``        ``{`` ` `            ``// Store the value``            ``// of the string``            ``int` `val = ``0``;`` ` `            ``// Find value of the string``            ``for``(``char` `che : ele.toCharArray()) val += che;`` ` `            ``// Check if it``            ``// is a Prime Number``            ``if` `(isPrime(val))``                ``c += ``1``;``        ``}``        ``return` `c;``    ``}`` ` `    ``// Driver code``    ` `    ``public` `static` `void` `main (String[] args) {``        ``String[] arr``            ``= { ``"geeksforgeeks"``, ``"a"``,      ``"computer"``,``                ``"science"``,       ``"portal"``, ``"for"``,``                ``"geeks"` `};`` ` `        ``// Function Call``        ``System.out.println(``            ``"Number of Armstrong Strings are: "``            ``+ count_armstrong(arr));``        ``System.out.println(``"Number of Prime Strings are: "``                          ``+ count_prime(arr));``    ``}``}` `// This code is contributed by patel2127.`

## Python3

 `# Python program for the above approach` `# Function to check if a``# number is prime number``def` `isPrime(num):` `    ``# Define a flag variable``    ``flag ``=` `False` `    ``if` `num > ``1``:` `        ``# Check for factors of num``        ``for` `i ``in` `range``(``2``, num):` `            ``# If factor is found,``            ``# set flag to True and``            ``# break out of loop``            ``if` `(num ``%` `i) ``=``=` `0``:``                ``flag ``=` `True``                ``break` `    ``# Check if flag is True``    ``if` `flag:``        ``return` `False``    ``else``:``        ``return` `True` `# Function to calculate``# order of the number x``def` `order(x):``    ``n ``=` `0``    ``while` `(x !``=` `0``):``        ``n ``=` `n ``+` `1``        ``x ``=` `x ``/``/` `10``    ``return` `n` `# Function to check whether the given``# number is Armstrong number or not``def` `isArmstrong(x):``    ``n ``=` `order(x)``    ``temp ``=` `x``    ``sum1 ``=` `0` `    ``while` `(temp !``=` `0``):` `        ``r ``=` `temp ``%` `10``        ``sum1 ``=` `sum1 ``+` `r``*``*``n``        ``temp ``=` `temp ``/``/` `10` `    ``# If the condition satisfies``    ``return` `(sum1 ``=``=` `x)` `# Function to count``# Armstrong valued strings``def` `count_armstrong(li):` `    ``# Stores the count of``    ``# Armstrong valued strings``    ``c ``=` `0` `    ``# Iterate over the list``    ``for` `ele ``in` `li:` `        ``# Store the value``        ``# of the string``        ``val ``=` `0``        ` `        ``# Find value of the string``        ``for` `che ``in` `ele:``            ``val ``+``=` `ord``(che)``            ` `        ``# Check if it an Armstrong number``        ``if` `isArmstrong(val):``            ``c ``+``=` `1``    ``return` `c` `# Function to count``# prime valued strings``def` `count_prime(li):``    ` `    ``# Store the count of``    ``# prime valued strings``    ``c ``=` `0``    ` `    ``# Iterate over the list``    ``for` `ele ``in` `li:``      ` `        ``# Store the value``        ``# of the string``        ``val ``=` `0``        ` `        ``# Find value of the string``        ``for` `che ``in` `ele:``            ``val ``+``=` `ord``(che)``            ` `        ``# Check if it``        ``# is a Prime Number``        ``if` `isPrime(val):``            ``c ``+``=` `1``    ``return` `c`  `# Driver code``arr ``=` `[``"geeksforgeeks"``, ``"a"``, ``"computer"``,``       ``"science"``, ``"portal"``, ``"for"``, ``"geeks"``]` `# Function Call``print``(``"Number of Armstrong Strings are:"``, count_armstrong(arr))``print``(``"Number of Prime Strings are:"``, count_prime(arr))`

## C#

 `// C# program for the above approach``using` `System;``using` `System.Collections.Generic;``class` `GFG``{``  ` `    ``// Function to check if a``    ``// number is prime number``    ``static` `bool` `isPrime(``int` `num)``    ``{` `        ``// Define a flag variable``        ``bool` `flag = ``false``;` `        ``if` `(num > 1) {` `            ``// Check for factors of num``            ``for` `(``int` `i = 2; i < num; i++) {` `                ``// If factor is found,``                ``// set flag to True and``                ``// break out of loop``                ``if` `((num % i) == 0) {``                    ``flag = ``true``;``                    ``break``;``                ``}``            ``}``        ``}` `        ``// Check if flag is True``        ``if` `(flag)``            ``return` `false``;``        ``else``            ``return` `true``;``    ``}` `    ``// Function to calculate``    ``// order of the number x``    ``static` `int` `order(``int` `x)``    ``{``        ``int` `n = 0;``        ``while` `(x != 0) {``            ``n = n + 1;``            ``x = x / 10;``        ``}``        ``return` `n;``    ``}` `    ``// Function to check whether the given``    ``// number is Armstrong number or not``    ``static` `bool` `isArmstrong(``int` `x)``    ``{``        ``int` `n = order(x);``        ``int` `temp = x;``        ``int` `sum1 = 0;` `        ``while` `(temp != 0) {``            ``int` `r = temp % 10;``            ``sum1 = sum1 + (``int``)(Math.Pow(r, n));``            ``temp = temp / 10;``        ``}` `        ``// If the condition satisfies``        ``return` `(sum1 == x);``    ``}` `    ``// Function to count``    ``// Armstrong valued strings``    ``static` `int` `count_armstrong(``string``[] li)``    ``{` `        ``// Stores the count of``        ``// Armstrong valued strings``        ``int` `c = 0;` `        ``// Iterate over the list``        ``foreach``(``string` `ele ``in` `li)``        ``{` `            ``// Store the value``            ``// of the string``            ``int` `val = 0;` `            ``// Find value of the string``            ``foreach``(``char` `che ``in` `ele) val += che;` `            ``// Check if it an Armstrong number``            ``if` `(isArmstrong(val))``                ``c += 1;``        ``}``        ``return` `c;``    ``}` `    ``// Function to count``    ``// prime valued strings``    ``static` `int` `count_prime(``string``[] li)``    ``{` `        ``// Store the count of``        ``// prime valued strings``        ``int` `c = 0;` `        ``// Iterate over the list``        ``foreach``(``string` `ele ``in` `li)``        ``{` `            ``// Store the value``            ``// of the string``            ``int` `val = 0;` `            ``// Find value of the string``            ``foreach``(``char` `che ``in` `ele) val += che;` `            ``// Check if it``            ``// is a Prime Number``            ``if` `(isPrime(val))``                ``c += 1;``        ``}``        ``return` `c;``    ``}` `    ``// Driver code``    ``public` `static` `void` `Main()``    ``{``        ``string``[] arr``            ``= { ``"geeksforgeeks"``, ``"a"``,      ``"computer"``,``                ``"science"``,       ``"portal"``, ``"for"``,``                ``"geeks"` `};` `        ``// Function Call``        ``Console.WriteLine(``            ``"Number of Armstrong Strings are: "``            ``+ count_armstrong(arr));``        ``Console.WriteLine(``"Number of Prime Strings are: "``                          ``+ count_prime(arr));``    ``}``}` `// This code is contributed by ukasp.`

## Javascript

 ``
Output
```Number of Armstrong Strings are: 0
Number of Prime Strings are: 2```

Time Complexity: O(N*M), where M is the length of the longest string in the array arr[]
Auxiliary Space: O(1)

Attention reader! Don’t stop learning now. Get hold of all the important mathematical concepts for competitive programming with the Essential Maths for CP Course at a student-friendly price. To complete your preparation from learning a language to DS Algo and many more,  please refer Complete Interview Preparation Course.

My Personal Notes arrow_drop_up