# [R] Problems trying to generate a prime factor vector

Kevin Wright wrightkevin3000 at gmail.com
Thu Dec 3 12:42:26 CET 2015

```Hi,

I am very new to 'R' and am trying to write an R function which returns the
prime factors of a given number(n)

Unfortunately, the function only works for very small numbers, if for
example I pass 18 to the function
a mysteriously long vector is returned. I have not been able to find where
or why this is happening.
I know I've done something wrong. I've tried using debugging statements.
Sometimes the
currentPrime variable seems to become some sort of array?!

can you help?

library(gmp)

#passing 18 returns: 2 1 0 0 0 1 0 0 0 1 0 0 0 3 0 0 0 1 0 0 0 1 0 0 0 1 0
0 0 3 0 0 0
# expected: 2 3 3
getPrimeFactors = function(n){
primeList <- c()

if( isprime(n) ){
primeList <- append(primeList,n)
return (primeList)
}

currentPrime <- 2

while(TRUE){
# Check if input is divisible by the current prime
if(n %% currentPrime == 0){
cat(sprintf("the number %f is divisible by %f\n", n,
currentPrime))
n = n%/%currentPrime

cat(sprintf("value of n is %f\n", n))

cat(sprintf("current prime :%f\n", currentPrime))
primeList = append(primeList,currentPrime)
# print(c("list contents:", primeList))

currentPrime = 2

if( isprime(n)){

primeList = append(primeList, n)
return (primeList)

}

}
else{
cat(sprintf("the number %f is NOT divisible by %f\n", n,
currentPrime))
#cat(sprintf("current prime before is: %f\n", currentPrime))
#print(c("current prime before:", currentPrime))
currentPrime = nextprime(currentPrime)
#cat(sprintf("current prime after is: %f\n", currentPrime))
#print(c("current prime after:", currentPrime))

}

}

}

}

[[alternative HTML version deleted]]

```

More information about the R-help mailing list