Problem in logic building

I am unable to understand exactly what question want to say

@abhishekpandeycsaiml21_c74cb0ea3a791122
According to the Problem the work is to find the Max CB numbers from the given number.

  • As to work on substrings of the given number, we will capture the element into the String instead of integer .
  • The number ‘n’ given is nothing to do with our approach(as we are working on String) but can be useful acoording to your approach.

Intuition :

  • Put loop on string that will give substring of every length.
  • create a function that will return true if the passed number is a CB number otherwise return false.
  • To put a check if the digit is already a part of the any other CB number, create an boolean array say, valid which store which digits till now has been a part of any other CB number.
  • Take a counter and increment if a CB number is found.
  • At the end print the count.
public class cbNos {
    public static void main(String[] args) {
        Scanner scn = new Scanner(System.in);
        scn.nextInt();
        String str = scn.next();
        int count = 0;
        boolean[] visited = new boolean[str.length()];

        for (int len = 1; len <= str.length(); len++) {

            for (int si = 0; si <= str.length() - len; si++) {

                int ei = si + len;

                String ss = str.substring(si, ei);

                if (isCBNo(Long.valueOf(ss)) && isValid(visited, si, ei)) {

                    count++;

                    for (int i = si; i < ei; i++) {
                        visited[i] = true;
                    }

                }
            }

        }

        System.out.println(count);

    }

    public static boolean isValid(boolean[] visited, int start, int end) {

        for (int i = start; i < end; i++) {
            if (visited[i]) {
                return false;
            }
        }

        return true;
    }

    public static boolean isCBNo(long n) {

        if (n == 0 || n == 1) {
            return false;
        }

        long[] arr = { 2, 3, 5, 7, 11, 13, 17, 19, 23, 29 };

        for (int i = 0; i < arr.length; i++) {
            if (n == arr[i]) {
                return true;
            }
        }

        for (int i = 0; i < arr.length; i++) {
            if (n % arr[i] == 0) {
                return false;
            }
        }

        return true;
    }

  }

I hope I’ve cleared your doubt. I ask you to please rate your experience here
Your feedback is very important. It helps us improve our platform and hence provide you
the learning experience you deserve.

On the off chance, you still have some questions or not find the answers satisfactory, you may reopen
the doubt.