Палиндром с простым числом

Суть задания написать наибольший простой палиндром не больше N. У меня есть код, но он работает до определенных чисел, а именно после 1900 он всегда выдает 1, где ошибка? Microsoft Visual studio

#include <stdio.h>
int main()
{
int n;              
int con = 0;      
int h;
int d;
int schet = 0;
scanf_s("%d", &h);
if (h <= 100) { // костыль для 100
    printf("%d", 1);
}
for (n = 1; n <= h; n++)
{
    for (d = 2; d < (h / 2); d++)
    {
        if (n % d == 0)
        {
            schet = schet + 1;
        }
    }

    if (schet == 0)
    {                                       //палиндром 
        int reverse = 0;
        int golov = n;

        while (golov != 0)
        {
            reverse = reverse * 10;
            reverse = reverse + golov % 10;
            golov = golov / 10;
        }
        if (n == reverse)
        {
            con = n;
        }
    }
    schet = 0;
 }
 printf("%d", con);

 }

Так смотрите что именно происходит при 1900 по шагам.
Отладочный вывод и/или отладчик.
Как отлаживать маленькие программы – Блог Петра Калинина

По-моему, лучше сначала проверять на палиндромность, а потом на простоту. И раз нужен наибольший, то идти не от 1 до N, а от N до 1 и сразу завершать поиск при нахождении первого подходящего числа.

Тут надо n / 2.
И статью с советами по отладке прочтите, чтобы простые опечатки выявлять быстрее.