R语言 在给定的范围内找到n个数字以内的完全数的R程序
给定一个范围,任务是编写一个R程序来打印该范围内的所有完全数。
一个正整数等于它的适当除数之和,被称为完全数。最小的完全数是6,它是1、2、3之和。其他完全数是28,496,和8128。请注意,所有的完全平方数都以0,1,4,5,6或9结尾,但是所有的数字都以0,1,4,5,6或9结尾,因此完全数不是完全平方数。例如,11、21、51、79、76等都不是完全平方数。
算法 。
- 固定区间
- 寻找数字的因子
- 找出和
- 检查等价性
- 选择相应的
- 递增数字
- 以这种方式继续下去,直到达到区间的终点。
例子:
寻找从1开始的10个完全数和非完全数?
输出
[1] “1不是一个完美的数字”
[1] “2不是一个完美的数字”
[1] “3不是一个完美的数字”
[1] “4不是一个完美的数字”
[1] “5不是一个完美的数字”
[1] “6是一个完美的数字”
[1] “7不是一个完美的数字”
[1] “8不是一个完美的数字”
[1] “9不是一个完美的数字”
[1] “10不是一个完美的数字”
例1 :
for (k in 50:100) {
n = k
i = 1
s = 0
while (i < n) {
if (n %% i == 0) {
s = s + i
}
i = i + 1
}
if (s == n) {
print(paste(n,"is a perfect number"))
} else{
print(paste(n,"is not a perfect number"))
}
k=k+1
}
输出
[1] “1 is not a perfect number”
[1] .
[1] .
[1] “6 is a perfect number”
[1] “7 is not a perfect number”
[1] .
[1] .
[1] “27 is not a perfect number”
[1] “28 is a perfect number”
[1] .
[1] .
[1] “495 is not a perfect number”
[1] “496 is a perfect number”
[1] .
[1] .
[1] “500 is not a perfect number”
例2 :
perfect_numbers = c()
non_perfect_numbers=c()
for (k in 1:100) {
n <- k
i = 1
s = 0
while (i < n) {
if (n %% i == 0) {
s = s + i
}
i = i + 1
}
if (s == n) {
perfect_numbers = c(perfect_numbers, n)
} else{
non_perfect_numbers = c(non_perfect_numbers, n)
}
}
print(perfect_numbers)
print(non_perfect_numbers)
k=k+1
输出
(perfect_numbers)
[1] 6 28
(non_perfect_numbers)
[1] 1 2 3 4 5 7 8 9 10 11 12 13 14 15 16 17 18 19 20
[20] 21 22 23 24 25 26 27 29 30 31 32 33 34 35 36 37 38 39 40
[39] 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
[58] 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78
[77] 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97
[96] 98 99 100