http://projecteuler.net/index.php?section=problems&id=187
A composite is a number containing at least two prime factors. For example, 15 = 3 × 5; 9 = 3 × 3; 12 = 2 × 2 × 3.
There are ten composites below thirty containing precisely two, not necessarily distinct, prime factors: 4, 6, 9, 10, 14, 15, 21, 22, 25, 26.
How many composite integers, n < 10^(8), have precisely two, not necessarily distinct, prime factors?
library(gmp) bign <- 10^8 n <- 1:floor((bign -1)/2) p=1:10000 p = p[as.logical(isprime(p))] for (i in p) { n <- n[as.logical(n %% i)] } idx <- as.logical(isprime(n)) allp <- c(p,n[idx]) count <- 0 for (i in allp[allp < sqrt(bign)]) { count <- count + length(allp[allp < bign/i]) allp = allp[-1] } print(count)
----
[1] 17427258
user system elapsed
449.67 72.40 522.87
Not fast enough...

呃, 想问下不用gmp包, 能做不 ..
Reply
ygc
Reply:
December 25th, 2010 at 12:19 pm
gmp包只用了isprime函数,自己写一个就OK了。
Reply