>>495
バグに気づいたので修正
# LCM of a,b,c == p^n*q^m -> how many combination and show
pmqn <- function(m,n,print=FALSE){
(gr=as.matrix(expand.grid(0:m,0:n)))
f0 <- function(x) rep(c('p','q'),x)
(v=c(c('1'),apply(gr[-1,],1,f0)))
f <- function(x){
D=('p' %in% v[x][[1]] & 'p' %in% v[x][[2]] & 'p' %in% v[x][[3]])|('q' %in% v[x][[1]] & 'q' %in% v[x][[3]] & 'q' %in% v[x][[3]])
y=unlist(v[x])
M=sum('p'==y)>=m & sum('q'==y)>=n
!D&M
}
(l=length(v))
ways=sum(combn(l,3,f))
idx=which(combn(l,3,f))
(z=combn(l,3)[,idx])
if(print){
for(j in 1:ways){
cat(v[z[,j]][[1]], '|',v[z[,j]][[2]],'|',v[z[,j]][[3]],'\n')
}}
return(ways)
}
>>496 p^2*q^2だと33通りだった 
> pmqn(2,2,T)
1 | p | p q q
1 | p | p p q q
1 | p p | q q
1 | p p | p q q
1 | p p | p p q q
1 | q | p p q
1 | q | p p q q
1 | p q | p p q
1 | p q | p q q
1 | p q | p p q q
1 | p p q | q q
1 | p p q | p q q
1 | p p q | p p q q
1 | q q | p p q q
1 | p q q | p p q q
p | p p | q q
p | q | p q
p | q | p p q
p | q | p q q
p | q | p p q q
p | p q | q q
p | p p q | q q
p | q q | p q q
p | q q | p p q q
p p | q | p q
p p | q | p p q
p p | q | q q
p p | q | p q q
p p | q | p p q q
p p | p q | q q
p p | p p q | q q
p p | q q | p q q
p p | q q | p p q q
[1] 33