Программа путает значения

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

введите сюда описание изображения

#include <stdio.h>
 
int main()
{
unsigned int a,i;
int max=0;
int n = 0;
    do {
        printf("\nВведите число = ");scanf("%d",&a);
        for (i=1; i<=a; i++)
            if (a%i == 0) n = n + 1;
       if(a!=0) printf("Делителей = %4d ", n);
       if (n>max) max=a;
    }  while (!(a==0));

printf("Число с максимальным количеством делителей = %d делителей %d", max,n);

return 0;
}

Ответы (1 шт):

Автор решения: Igor
int n = 0;
int nMax = 0;
...
    n = 0; // <--
    for (i=1; i<=a; i++)
        if (a%i == 0) n = n + 1;
    ...
  if (n>nMax) {
    max=a;
    nMax = n;
  }
...
printf("Число с максимальным количеством делителей = %d делителей %d", max,nMax);
→ Ссылка