回文质数,不知道为啥我打印出来的121也在里面

不知道为什么我的打印出来之后121也在结果里面
洛谷的题:P1217 [USACO1.5]回文质数 Prime Palindromes


#include<stdio.h>
int main()
{
    int a,b,d,d1,d2,d3,d4,d5,n,j,i=1,flag;
    long long palindrome[100000];
    scanf("%d %d",&a,&b); 
    
    for (d = 1; d <=9 ;d+=2)
    {    
        palindrome[i] = d;
        i++;
    }
    for (d1 = 1; d1 <= 9; d1+=2) //三位
    {    
        for (d2 = 0; d2 <= 9; d2++) 
        {
            palindrome[i] = 100*d1 + 10*d2 +1*d1;
            i++;
        }
    }
    for (d1 = 1; d1 <= 9; d1+=2) //五位
    {    
        for (d2 = 0; d2 <= 9; d2++) 
        {
            for (d3 = 0; d3 <= 9; d3++) 
            {
                palindrome[i] = 10000*d1 + 1000*d2 +100*d3 + 10*d2 + d1;
                i++;
            }
        }
    }
    for (d1 = 1; d1 <= 9; d1+=2) //七位
    {    
        for (d2 = 0; d2 <= 9; d2++) 
        {
            for (d3 = 0; d3 <= 9; d3++) 
            {
                for (d4 = 0; d4 <=9; d4++)
                {    
                    palindrome[i] = 1000000*d1 + 100000*d2 +10000*d3 + 1000*d4 + 100*d3 + 10*d2 + 1*d1;
                    i++;
                }
            }
        }
    }

    for (n = 2; n <= i ; n++)
    {
        if (palindrome[n] >=a && palindrome[n]<=b)
            for (j = 2; j < n; j++)
            {
                if (palindrome[n] % j == 0)
                {       
                    flag = 0;
                    break;
                }
                 else 
                    flag = 1;
                
                   
            }    
            if (flag)
            {
                printf("%lld\n", palindrome[n]);
            }    
    }
    return 0;
}

img

最后一个for语句改为for (j = 2; j < palindrome[n]; j++)