How to check if a number is palindromic prime cyclops in C++

1 Answer

0 votes
// A number with odd number of digits and zero in the center is cyclops number

#include <iostream>
#include <cmath> 

bool isCyclopsNumber(int n) {
    if (n == 0) {
        return true;
    }
     
    int m = n % 10;
    int count = 0;
    while (m != 0) {
        count++;
        n /= 10;
        m = n % 10;
    }
     
    n /= 10;
    m = n % 10;
    while (m != 0) {
        count--;
        n /= 10;
        m = n % 10;
    }
     
    return n == 0 && count == 0;
}
bool isPrime(int n) {
    if (n < 2) return false;
    
    double total = std::sqrt(n);
    for (int i = 2; i <= total; i++) {
        if (n % i == 0) {
            return false;
        }
    }
    return true;
}
bool isPalindrome(int n) {
    int reverse = 0, temp = n;    
          
    while (temp != 0) {    
        int remainder = temp % 10; 
        reverse = (reverse * 10) + remainder;    
        temp = temp / 10;    
    }    
    
    return n == reverse;   
}
 
int main(void) {
 
    int n = 12099;
    std::cout << (isCyclopsNumber(n) && isPrime(n) && isPalindrome(n) ? "yes" : "no") << "\n";
    
    n = 31013;
    std::cout << (isCyclopsNumber(n) && isPrime(n) && isPalindrome(n) ? "yes" : "no") << "\n";

}
 
 
 
 
/*
run:
 
no
yes
 
*/

 



answered Mar 29, 2023 by avibootz
edited Mar 29, 2023 by avibootz

Related questions

1 answer 98 views
1 answer 123 views
1 answer 103 views
1 answer 94 views
1 answer 91 views
1 answer 104 views
1 answer 124 views
...