R语言 寻找区间内素数和合数
一个自然数(1,2,3,4,5等)如果大于1并且不能写成两个较小的自然数的乘积,则称为质数。大于1的非质数被称为复合数。
一个复合数是一个正整数,可以由两个较小的正整数相乘而形成。等价地,它是一个正整数,至少有一个除数不是1和它本身。
例子
输入 :2
输出: 素数
解释: 它只能被2整除,所以是质数。
输入: 4
输出: 复合
解释 : 它能被2和4整除,所以是复合数。
输入: 5
输出 :质数
解释 :它只能被5整除,所以是质数。
算法
- 初始化范围,直到显示质数和合数的地方。
- 创建一个单独的空列表来存储质数和合数。
- 由于1既不是质数也不是合数。
- 我们从2开始检查素数的条件,即i。
- 从2开始检查每一个正好除以i的数字。
- 如果除了i以外没有任何数字除以i,那么这个数字就被储存在素数列表中。
- 否则将被储存在复合数列表中。
- 它一直执行到n(由我们给定)达到极限。
- 一旦它从循环中退出,它就把质数和合数都打印成单独的列表。
例子
# R code for Finding composite and prime numbers upto 100
# initialize number n
n=100
# arranging sequence
x = seq(1, n)
# creating an empty place to store the numbers
prime_numbers=c()
composite_numbers = c()
for (i in seq(2, n)) {
if (any(x == i)) {
# prime numbers gets stored in a sequence order
prime_numbers = c(prime_numbers, i)
x = c(x[(x %% i) != 0], i)
}
else{
# composite numbers gets stored in a sequence order
composite_numbers = c(composite_numbers, i)
}
}
# printing the series
print("prime_numbers")
print(prime_numbers)
print("composite_numbers")
print(composite_numbers)
输出
[1] "prim_numbers"
[1] 2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97
[1] "composite_numbers"
[1] 4 6 8 9 10 12 14 15 16 18 20 21 22 24 25 26 27 28 30
[20] 32 33 34 35 36 38 39 40 42 44 45 46 48 49 50 51 52 54 55
[39] 56 57 58 60 62 63 64 65 66 68 69 70 72 74 75 76 77 78 80
[58] 81 82 84 85 86 87 88 90 91 92 93 94 95 96 98 99 100