ruby 判斷質數
質數是只能由其自身和一(1)除的數。 ruby使使用prime類訪問任意範圍內的質數變得很方便。 此類表示所有質數的集合。 ruby還提供了幾種訪問此處值的方法。 要使用素類,請按以下步驟在文件中「要求」它:
require 『prime』
要返回一定範圍內所有素數的陣列,可以將prime類與可列舉方法一起使用。 只需按如下所示傳遞乙個塊:
prime = prime.take_while
print prime
# [2, 3, 5, 7, 11, 13, 17, 19, 23, 29]
這也可以通過使用主要的eratosthenes發生器來完成。 這將在需要時使用eratosthenes方法生成所需的質數:
num =50
prime_nums = prime::eratosthenesgenerator.new.take_while
print prime_nums
# [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47]
「 prime.prime?」 方法可用於確定傳入的任何數字是否為質數。
prime.prime?(60 )
# returns false
prime.prime?( 5 )
# returns true
這些簡單而強大的方法可以與其他可列舉的ruby方法一起使用,以解決其他問題。 確定存在於指定數字範圍內的質數的數量就是這種可能性之一。
require "prime"
def number_of_primes (array)
prime_arr = prime.take_while
num = array.count do |x|
prime_arr. include ?(x)
endnum
endputs number_of_primes([ 121 , 17 , 21 , 29 , 11 , 341 , 407 , 19 , 119 , 352 ])
# 4
最後,prime模組可用於確定數量,該數量是給定列表中最多數量的因素。 為此,可以採取以下步驟:
1)檢索一組最高數之前的質數陣列:
prime_arr = prime.take_while
2)確定列表中每個數字的因數,並將這些值儲存在持有人中。
for i in 0 ...array.length
nums << ( 1 ...array[i]).select
end
3)使用先前儲存的素數陣列,使用for迴圈確定哪些因數是素數。
for i in 0 ...nums.length
for j in 0 ...nums.length
if prime_arr. include ?(nums[i][j])
result << nums[i][j]
endend
end
4)計算並返回最常出現的最大值。
mode = result.uniq.max_by
mode
將所有這些放在一起可以使我們:
require 'prime'
def prime_prime (array)
nums =
result =
prime_arr = prime.take_while
for i in 0 ...array.length
nums << ( 1 ...array[i]).select
endfor i in 0 ...nums.length
for j in 0 ...nums.length
if prime_arr. include ?(nums[i][j])
result << nums[i][j]
endend
endmode = result.uniq.max_by
mode
endputs prime_prime([ 2 , 3 , 5 , 6 , 9 ])
# => 3
puts prime_prime([ 121 , 17 , 21 , 29 , 11 , 341 , 407 , 19 , 119 , 352 ])
# => 11
因此,您可以看到,所示的prime模組可以以多種巧妙的方式使用!
翻譯自:ruby 判斷質數
mysql 判斷質數 質數(素數)判斷演算法總結
1.原始演算法 就是將質數的定義翻譯成 就要看i是否能被小於它的sqrt i 的數整除。時間複雜度o n sqrt n 空間複雜度o m m為質數個數。2.質數篩法 定義bool is prime n 1 初始化為1 奇數為1,偶數為0 已經2為最小的質數,將2的倍數的布林值都設為false,如此類...
演算法題 判斷素數 質數
判斷素數 埃拉託斯特尼篩法 這種方法的思想是設定乙個標誌陣列isprimes n 標誌陣列的每一位標示相應的數是不是素數,初始化為全true。演算法從i 2開始,依次將質數的倍數標記為非素數,即將標記陣列的相應位改為false。標記質數的倍數的時候從i i也就是i的平方開始標記,不需要從i j 且j...
判斷素數與產生素數表(質數)
素數在小學數學也叫質數 方法 所謂素數是指除了1和它本身以外,不能被任何整數整除的數,例如17就是素數,因為它不能被2 16的任一整數整除。因此判斷乙個整數m是否是素數,只需把m被2 m 1之間的每乙個整數去除,如果都不能被整除,那麼m就是乙個素數。另外判斷方法還可以簡化。m不必唄2 m 1之間的每...