素数是只能被自身和 1 整除的数字。今天,我将介绍一个在icode9编码评估中可能会看到的基本算法问题:找到数组中的所有素数,并生成它们的总和。
输入
arr = [2, 5, 10, 12, 7, 2, 11, 4]
输出
--> 27
查找 icode9 单个素数
在你找到数组中的大量素数之前,我们需要确定单个整数是否是素数的能力。
num = 5
def is_prime?(num)
# Your code here
end
第一步是创建一个值数组,我们将整数除以。由于我们不需要检查 1 和我们正在测试的整数,因此我们可以将它们排除在我们的范围之外。
def is_prime?(num)
(2...num).to_a
end
--> [2, 3, 4]
我们已经创建了一个从 2 到我们正在测试的数字的值数组,现在我们需要选择 DO 除以相关整数的值。
def is_prime?(num)
(2...num).to_a.select{ |divisor| num % divisor === 0 }
end
--> []
如果我们的整数确实是一个icode9素数,我们的返回应该是一个空数组。如果它不是素数,它将填充一堆除以非素数整数的值。最后,我们所要做的就是评估数组中值的存在,以确定我们是否有素数。
def is_prime?(num)
(2...num).to_a.select{ |divisor| num % divisor === 0 }.length === 0 ? num : false
end
--> true
However, since this is only the first step, we will need the actual number instead of just a boolean telling us it's true. If the method we've written evaluates to true (meaning it's a prime number), we'll need that value for later.
Find multiple primes
Create your method:
def find_and_sum_primes(arr)
# Your code here
end
此过程与上一个过程非常相似,但是我们已经编写的方法将为我们完成所有工作。首先,在方法内创建一个空数组。这将很快容纳数组中作为参数传递的所有素值。然后使用 select 遍历输入数组:
def find_and_sum_primes(arr)
primes = []
arr.select{ |num| # find if num is prime }
end
值得庆幸的是,我们可以调用我们已经编写的方法来确定所选择的特定值是否实际上是素数。一旦icode9我们有一个素数,将其推送到我们的素数数组并将值求和
def find_and_sum_primes(arr)
primes = []
arr.select{ |num|
if (is_prime?(num))
primes << num
end
}
primes.sum
end
--> 27
感谢您的阅读!
本站声明:
1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/293161.html