I'd like to weigh in here, recently starting working in security and I had the same thought as indeed, you correctly noticed that finding primes is very hard and computationally intensive. Actually for the same reason as it offers security: finding primes is in fact comparably difficult as finding the prime factors of the composite number, for any size of the number. If it were easy to find prime factors, it would have also be easy to find primes (= proving that a random number is prime) since finding factors of a number is disproving it's primality. As far as security goes, that's not very good since it must be much much more difficult to break a key then to generate it, otherwise you can forget about security (it 'll either be to easy to break or to difficult to generate).
However, that is, as was already explained by @tylerl, if you want the prime to be a (100%) proven prime. However, you can work with pseudoprimes that are probably prime. The reason is that even if the pseudoprime turns out to be composite after all, anyone is going to have a very hard time finding the factors of it either way (or for that matter of a composite number with that composite pseudoprime as a factor, which would be you public key). Same reasoning here: if it were easy, you'd also easily checked and discarded the number. Moreover, an attacker has no way of knowing which of the keys are composed of a composite pseudoprime, so he would have to try them all (again same reasoning here: if there would be a way, the generator of the key would have been able to do it as well).
You can understand this intuitively: if a number is highly composite, you will be more likely to (quickly) find factors, therefore it would be easy to disprove primality. On the contrary, the fewer factors a number has, the more difficult it is going to be to find them, thus the more likely it is going to be that it is indeed prime if you have tried to find them for a while. To be complete, there are offcourse algorithms that are more optimal than simple trial division, but they are likely going to be only more efficient to some extent (some order of magnitude).
In fact, all you need to make something secure is (apart from efficiently generating candidates) a way to much easier and faster narrow down the probability that a number is prime than to find the factors of that given number, if it turns out not to be prime. As it turns out, there exists ways to do that and that is the fact that security is build on, in contrast with what is is sometimes (incorrect) stated that asymmetric encryption works with primes. It doesn't: it works with pseudoprimes. However, as it turns out, that is for all practical purposes "good enough": A security designer can arbitrarily set the bar of primality certainty as he deems it to be warranted by the value of the information it is protecting weighing against the cost of running the primality check.
Also correctly noted: the predictability of the random numbers generated as input for the key is one of the major aspects of differentiation between levels of security of systems. Randomly picking primes from a small and known list of primes would indeed indicate a low level of security, but can be acceptable given what is to be protected: the knowledge which kind of pizza someone orders probably doesn't have to be protected as well as your credit card number you use to order that pizza online (unless maybe you are the white house and your order may be seen as a declaration of war, see "The Pentagon Pizza Meter theory", but that's a story for another question). Which is why you mostly get redirected to a third party payment provider when ordering something online: Even though both use the exact same security algorithms, they aren't as securely implemented.