Destroy A Certain Instantiate On Tap Help?

So as the title states, what I am trying to do with these scripts is make it so that the game will spawn 0-5 objects and when a certain one of these instantiated objects are tapped, they are destroyed. My problem at the moment is that when I tap any of the objects that randomly spawn, only the original game object gets destroyed. Any suggestions would do wonders.

Script that spawns objects:

    public Transform prefab;
    private int randNum;
    private int radius;

    // Use this for initialization
    void Start ()
    {
        randNum = Random.Range(0, 5);
        radius = Random.Range(0, 5);
        for (int i = 0; i < randNum; i++)
        {
         Instantiate(prefab, Random.insideUnitSphere * radius + transform.position, transform.rotation);
        }

    }

Script that allows game objects to be tapped and then destroyed:

    public Text countScore;
    private int score;
    public GameObject prefab;

    // Use this for initialization
    void Start () {

        score = 0;
        SetCountText();

    }

    // Update is called once per frame
    void Update()
    {
        if ((Input.touchCount > 0) && (Input.GetTouch(0).phase == TouchPhase.Began))
        {
            Ray raycast = Camera.main.ScreenPointToRay(Input.GetTouch(0).position);
            RaycastHit raycastHit;
            if (Physics.Raycast(raycast, out raycastHit))
            {
                Debug.Log("Something Hit");
                Destroy(prefab);

            if (raycastHit.collider.name == "Button")
                {
                    Debug.Log("Button clicked");
                }

@Amanichai, if you create 5 objects, you have to destroy 5 objects. If you create 5 children of a parent object, you can delete the parent to delete the children.

To ‘remember’ the 5 objects (or whatever the quantity), you need to know what they are. You could “Find” them, or you could remember them in a container.

Try something like:

 public Transform prefab;
 private int randNum;
 private int radius;

// a list for the objects
 public static List< GameObject > objects;

 // Use this for initialization
 void Start ()
 {
     // define storage for the list of objects
     objects = new List< GameObject >();
     randNum = Random.Range(0, 5);
     radius = Random.Range(0, 5);
     for (int i = 0; i < randNum; i++)
     {
      // remember what Instantiate returns as a GameObject

      GameObject o = Instantiate(prefab, Random.insideUnitSphere * radius + transform.position, transform.rotation) as GameObject;

      // add to the list of objects
      objects.Add( o );
     }
 }

Then, when the time comes to remove all of them, something like:

foreach( GameObject o in objects )
 {
  Destroy( o );
 }
objects.clear(); // they're destroyed, so forget them.