返回首页 - Notes - 2012

求取素数(用 Ruby 实现)


问题描述

计算并输出 1-100 以内的所有素数


算法求解

代码如下:

$arr = []  # 声明一个全局数组以保存素数
$arr[0] = 2  # 第一个素数不需要计算就可以确定

# 从3开始,以步长为2遍历,直到最大值,如果是素数就添加到全局数组末尾
def add_prime(n)
  3.step(n, 2){|num| $arr << num if is_prime? num}
end  # function

# 判断某数是否为素数
def is_prime?(number)
  j = 0
  while $arr[j]*$arr[j] <= number
    return false if number % $arr[j] == 0
    j += 1
  end  # while
  return true
end  # function

add_prime(100)
# 以逗号为分隔符输出数组元素,最后换行
print $arr.join(", "), "\n"

date : 2012-10-06