¿Por qué recibo el error de segmentación en el siguiente programa c?

El siguiente código se compiló con éxito, pero recibo el error de segmentación en la primera línea delmain función. No entiendo por qué recibo este error.

#include <stdio.h>
#include <math.h>
unsigned int prime=2;

void resetprimegenerator()
{
    prime=2;
}

unsigned int getnextprime()
{
    while(1)
    {
        if(isprime(prime))
            return prime;
    }

}

int isprime(unsigned int n)
{
    int i=3,check=1;
    if(n==2)
        return n;
    for(i=3;i<=sqrt(prime);i+=2)
    {
        if(prime%i==0)
        {
            check=0;
            break;
        }
    }
    return check;
}
int main()
{
    int t,n,i=0,j=0;
    int input[500];
    unsigned int answer[500][5000];
    scanf("%d",&t);
    getchar();
    while(t-->0)
    {
        scanf("%d",&input[i]);
        getchar();
        n=input[i];
        j=0;
        resetprimegenerator();
        while(n-->0)
        {
            answer[i][j]=getnextprime();
            j++;
        }
        i++;
    }
    for(i=0;i<t;i++)
    {
        for(j=0;j<input[i];j++)
        {
            if(j==input[i]-1)
                printf("%u",answer[i][j]);
            else
                printf("%u ",answer[i][j]);
        }
    }
    return 0;
}

No entiendo por qué recibo el siguiente error.

Respuestas a la pregunta(2)

Su respuesta a la pregunta