Función de número primo en R

Estoy tratando de crear una función para probar si un número entero dado es un número primo. Intenté usar lo siguiente:

tpn <- function(prime.num){

    if(prime.num==2){
        print("PRIME")
    } else {

    if(prime.num%%(2:(prime.num-1))!=0){
        print("PRIME")

    } else { 
        print("NOT PRIME")

}}}

Esto no funciona, aunque no puedo entender por qué. Estoy comprobando si el número dado se puede dividir por cualquiera de los números enteros hasta este número sin residuos. Si no puede, entonces el número es primo.

Otra solución que encontré fue:

tpn <- function(pn){

    if(sum(pn/1:pn==pn%/%1:pn)==2)
            print("prime")

}

Esto funciona. Aunque, no puedo entender lo quesum(pn/1:pn == pn%/%1:pn) == 2 en realidad está probando para.

Respuestas a la pregunta(11)

Su respuesta a la pregunta