我试图找到完美的号码。 完美的数字是它的因子(包括1)的总和等于它自己。 我需要找到第一个和第二个完美数字6和28。 所以我从2号开始直到找到2个完美数字。 这是代码:
num.perfect <- 2
count <- 0
iter <- 2
while(count < num.perfect)
{
divisor <- 1
for(i in 2:iter) #find the factors of a number
{
if(iter%%i==0)
{
divisor <- c(divisor, i)
}
}# end for loop
if(sum(divisor)==iter) #print the perfect number
{
print(paste(iter, " is a perfect number", sep=""))
count <- count + 1
} # end if
iter <- iter +1
} # end while loop
但是循环继续运行并且不会停止。我的代码出了什么问题?
答案 0 :(得分:2)
您可以尝试使用此代码,看看它是否符合您的要求:
facs=function(n) head((1:n)[n%%(1:n)==0],-1)
perf=function(x){
k=numeric(x)
m=i=0
while(m<x){
i=i+1
if(sum(facs(i))==i){m=m+1;k[m]=i}
}
k
}
perf(4)
# [1] 6 28 496 8128