Declara una función de vacío en C?

Estoy aprendiendo C y estoy estudiando funciones. Entonces, leí que cuando implemento mi propia función tengo que declararla antes de main (). Si me olvido de la declaración, el compilador recibirá un mensaje de error.
Mientras estudiaba este ejemplo (encuentra si el número es un número primo)

#include <stdio.h>

void prime();               //function prototype(declaration) 

int main()
{ 
   int num,i,flag; 

   num = input();            // No argument is passed to input()

   for(i=2,flag=i; i<=num/2; ++i,flag=i)
   {
      flag = i;

      if(num%i==0)
      { 
         printf("%d is not prime\n",num); 
         ++flag; 
         break; 
      }
   }

  if(flag==i)
     printf("%d is prime\n",num);

  return 0;

}     

int input()  /* Integer value is returned from input() to calling function */
{ 
    int n;
    printf("\nEnter positive enter to check: "); 
    scanf("%d",&n); 
    return n;
 }

Noté que se declara una función prime (), pero en general se llama a input input () y también se implementa la entrada input () en la parte inferior. Ok, pensé que era un error y cambio el nombre de prime a input.
sin embargo Si borro la declaración y no pongo ninguna allí, el programa se compila sin errores y se ejecuta sin problemas. (Lo compilo y lo ejecuto en Ubuntu)

Así que mi pregunta es, ¿es necesario declarar una función nula sin argumentos?

Respuestas a la pregunta(3)

Su respuesta a la pregunta