Добрый день, возникла проблема с задачей, условие которой звучит так

Удалить из динамического массива все числа, являющиеся числами Армстронга (натуральное число, удовлетворяющее условию: сумма цифр, возведенных в степень n равна самому числу 153=13+53+33 степень n, степень определяется по количеству цифр в числе)

Я написал код, но он почему-то удаляет только одно число, а дальше не идёт, помогите разобраться в чем ошибка.


Код :
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. int power(int t, int k)
  4. {
  5.     int res = 1;
  6.     while (k)
  7.     {
  8.         if (k & 1)
  9.             res *= t;
  10.         t *= t;
  11.         k >>= 1;
  12.     }
  13.     return res;
  14. }
  15.  
  16. int Armstrong(int n)
  17. {
  18.     int i,a,c=0,b=0;
  19.     a=n;
  20.     while(a>0)
  21.     {
  22.         a=a/10;
  23.         c++;
  24.     }
  25.     a=n;
  26.     while (a>0)
  27.     {
  28.         b=b+power((a%10),c);
  29.         a=a/10;
  30.     }
  31.     a=n;
  32.     if(b==a)
  33.     {
  34.         return 1;
  35.     }
  36.     else
  37.     {
  38.         return 0;
  39.     }
  40. }
  41.  
  42. int main()
  43. {
  44.     int b,n=0,i,k,count=0;
  45.     printf("Enter array size\n");
  46.     printf("Array size:");
  47.     scanf("%d",&n);
  48.     int *a=(int *)malloc(n* sizeof(int));
  49.     for(i=0; i<n; i++)
  50.     {
  51.         printf("A[%d]=",i);
  52.         scanf("%d",&a[i]);
  53.     }
  54.     count=0;
  55.     int temp;
  56.     int j;
  57.     for(i=0; i<n; i++)
  58.     {
  59.         k=Armstrong(a[i]);
  60.         if (k==1)
  61.         {
  62.             temp=a[i];
  63.             for (j=i; j<n-1; j++)
  64.             {
  65.  
  66.                 a[j]=a[j+1];
  67.  
  68.             }
  69.             a[n-1]=temp;
  70.             for(i=0; i<n; i++)
  71.             {
  72.                 printf("%d ",a[i]);
  73.  
  74.             }
  75.             printf("\n");
  76.  
  77.             n--;
  78.             a=(int *)realloc(a,n*sizeof(int));
  79.         }
  80.     }
  81.     for(i=0; i<n; i++)
  82.     {
  83.         printf("%d ",a[i]);
  84.  
  85.     }
  86.     return 0;
  87. }