Le premier numéro de la fonction dans la R

Je suis en train de créer une fonction pour tester si un nombre entier est un nombre premier, j'ai essayé d'utiliser les éléments suivants:

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")

}}}

Cela ne fonctionne pas, bien que je ne peux pas comprendre pourquoi. Je suis de la vérification pour voir si le nombre donné est divisible par aucun des entiers jusqu'à ce nombre sans résidus. Si elle ne peut pas, alors le nombre est premier.

Une autre solution que j'ai trouvé était:

tpn <- function(pn){

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

}

Cela fonctionne. Bien que, je ne peux pas obtenir ma tête autour de ce qui sum(pn/1:pn == pn%/%1:pn) == 2 est en fait à tester.

Avez-vous essayé de le décomposer en morceaux? Si vous ne les avez, vous verriez que if n'accepte qu'un seul argument, pour une chose (dans votre premier exemple). Dans la seconde, quelques parenthèses pourrait l'aider, alors allez à la page d'aide ?Syntax de voir les opérations qui arrive en premier.
Peut-être un doublon de stackoverflow.com/q/3789968/321622 ou stackoverflow.com/q/3858636/321622

OriginalL'auteur user2952367 | 2013-11-04