我想创建一个函数,以特定的顺序打印给定向量的值:0,1,可被2整除的数字,可被2整除的数字(不是2,excl.0),可被5整除的数字(不是2和3,不包括0)等。
使用“冒泡排序”的某种韵律是不是一个好主意?我认为一个基本的想法是如果条件基于
if (x[i] %% divisor == 0 && x[i+1] %% divisor != 0)
我也知道我应该有一个循环,每回合会增加“除数”值,但除此之外我真的不知道如何开始。我能够理解基本的“冒泡排序”算法,但似乎我有太多的空白来舒适地解决这个问题。
答案 0 :(得分:0)
# generate a vector
x <- 1:1000
# the function
order_n <- function(v)
{
y <- 1:floor(v/2);
z <- y[v%%y == 0];
z <- z[z!=1];
return(ifelse(is.infinite(min(z)), 0, min(z))) }
# the ordering vector
xx <- rep(0, length(x))
for (i in 1:length(x)) {xx[i] <- order_n(x[i])}
head(xx,50)
[1] NA 0 0 2 0 2 0 2 3 2 0 2 0 2 3 2 0 2 0 2 3 2 0 2
[25] 5 2 3 2 0 2 0 2 3 2 5 2 0 2 3 2 0 2 0 2 3 2 0 2
[49] 7 2
我应该提到xx中的0值表示该数字是素数,因此应该为其指定最高顺序