📜  红宝石整数素数?示例函数(1)

📅  最后修改于: 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 的开发环境中运行,并且可以根据实际需求进行扩展和优化。