More efficient way to find primes in R

I previously posted a method of finding all primes up to a number ‘max’. Here’s a more efficient method that removes all non-primes rather than testing whether each number is a prime.

primes <- function(max) {
	a <- 2:max
	b <- 2:(max/2)
	for (i in b) {
		c <- (1:(max/i) * i)[-1]
		c <- c[c %in% a]
		a <- a[!(a %in% c)]
	}
	return(a)
}
Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s