📅  最后修改于: 2023-12-03 14:56:49.364000             🧑  作者: Mango
在 Ruby 编程语言中,我们可以编写一个函数来检查一个整数是否为素数。素数是指大于 1,且只能被 1 和自身整除的数。
下面是一个示例函数,用于判断一个整数是否为素数:
def prime?(num)
return false if num <= 1
(2..Math.sqrt(num)).each do |i|
return false if num % i == 0
end
true
end
这个函数接受一个整数 num
作为参数,并返回一个布尔值表示该整数是否为素数。函数内部依次检查从 2 到 num
的平方根之间的每个数,如果发现 num
可以被其中任何一个数整除,则返回 false,表示它不是素数。如果经过所有检查都没有发现可以整除的数,则表明 num
是素数,返回 true。
在上述示例函数中,我们使用了 Ruby 的循环语法 each
,用于迭代从 2 到 Math.sqrt(num)
的范围。Math.sqrt(num)
计算了 num
的平方根,通过 ..
创建一个范围,并使用 each
迭代该范围内的每个元素。在迭代过程中,我们使用取余运算符 %
来判断是否能整除,并根据结果返回相应的布尔值。
为了使函数更加高效,我们在循环中使用 Math.sqrt(num)
作为上界。因为如果一个数 num
不是素数,它的因子必定是成对出现的,并且其中一个必定小于或等于 Math.sqrt(num)
。因此,我们只需要检查范围在 2 到 Math.sqrt(num)
之间的数即可。
下面是一个使用示例:
puts prime?(2) # 输出 true
puts prime?(7) # 输出 true
puts prime?(10) # 输出 false
puts prime?(15) # 输出 false
puts prime?(23) # 输出 true
运行上述代码会输出每个整数是否为素数的结果。
该示例函数可以在 Ruby 的开发环境中运行,并且可以根据实际需求进行扩展和优化。