outer は,実に使いでのある関数だ
# 差が 6 の素数の組
n = 2:500
m = n[1-outer(n, n)]
index = which(outer(m, m, "-") == 6, arr.ind=TRUE)
cat(paste(apply(matrix(m[index], ncol=2), 1, function(x) sprintf("(%i,%i)", x[2], x[1])), collapse=","))
# または
cat(paste(mapply(function(x, y) sprintf("(%i,%i)", x, y), m[index[,2]], m[index[,1]]), collapse=","))
出力
(5,11),(7,13),(11,17),(13,19),(17,23),(23,29),(31,37),(37,43),(41,47),(47,53),(53,59),(61,67),(67,73),(73,79),(83,89),(97,103),(101,107),(103,109),(107,113),(131,137),(151,157),(157,163),(167,173),(173,179),(191,197),(193,199),(223,229),(227,233),(233,239),(251,257),(257,263),(263,269),(271,277),(277,283),(307,313),(311,317),(331,337),(347,353),(353,359),(367,373),(373,379),(383,389),(433,439),(443,449),(457,463),(461,467)