ruby 判斷質數 認識素數 維持素數的Ruby類

2021-10-07 23:39:58 字數 2473 閱讀 3458

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之間的每...