It depends of course what you require for your cryptosystem, but for just encryption and signature generation (which is also used for authentication, not just for non-repudiation) you just require RSA or ECC.
For RSA the key pair generation is identical for signature generation and encryption. Even the modular exponentiation is about the same. Signature generation is largely identical to decryption and signature verification is largely identical to encryption. The main difference is the padding scheme used for encryption and the signature.
For ECC the key pair generation is also identical for signature generation
and encryption. There are some differences between ECDH and ECDSA, but the calculations can still be performed within a largely overlapping set of calculations. ECDH can be used as input for ECIES, which is the encryption method commonly used for ECC cryptography.
There is however not a generic requirement for primitives within a signature generation or encryption scheme, as there is no common construction for signature generation or encryption schemes. Both RSA signature generation and ECDSA are quite different, and the same goes for RSA OAEP and ECIES with, for instance, AES-CBC.
Note that signature generation usually also requires a secure hash algorithm and that encryption schemes usually also require a symmetric cipher, unless they are used for a very small amount of data.
[EDIT] And all schemes rely on a (well seeded, pseudo) random number generator, certainly when it comes to key pair generation.