Я решаю проблему, когда в интервале [m, n] я должен найти зеркальные простые числа. Простые числа в зеркале - это простые числа, которые вы меняем местами и до сих пор получаем простое число (например, 17 и 71). Сайт, в котором я решаю, это дает мне 15 скрытых тестовых случаев, и мой код проходит только 12. Я не могу понять, о каких тестовых примерах я не думал.
#include <stdio.h>
#include <math.h>
long isPrime(long x){
if ((x == 0) || (x == 1)) return 0;
if ((x == 2) || (x == 3)) return 1;
if (x%2 == 0) return 0;
int root = sqrt(x) + 1;
for (int i = 3; i < root; i = i + 2)
{
if (x%i == 0) {return 0;}
}
return 1;
}
long reverse(long n){
long rev = 0, remainder;
while (n > 0) {
remainder = n % 10;
rev = rev * 10 + remainder;
n /= 10;
}
return rev;
}
int main(){
long m,n;
scanf("%ld %ld",&m,&n);
long count=0;
if(m==1 || m==0){count--;}
if(m<n){
for(long i=m;i<=n;i++){
if(isPrime(i) && isPrime(reverse(i))){
count++;
}
}
printf("%ld",count);
}
else{
for(long i=m;i<=n;i++){
if(isPrime(i) && isPrime(reverse(i))){
count++;
}
}
printf("%ld",count);
}
return 0;
}