在 Python 中生成隨機質數

Rayven Esplanada 2021年5月12日 2021年3月21日
在 Python 中生成隨機質數

本教程演示了在 Python 中生成和輸出任何隨機質數的方法。

質數是在程式設計中使用的非常有用的常量,尤其是在密碼學中。質數的使用對於加密和雜湊至關重要,因為它們可用於加密和雜湊敏感資料,並防止它們被隨意解密。

建立一個函式以生成給定範圍的隨機質數

質數只有 2 個因數(因數是可以將另一個數相除並得到整數的數)。質數只能被 1 及其自身整除。

從技術上講,不可能生成一個從 0 到無窮大的隨機質數,因為這將需要很多處理能力才能使其保持數量龐大。

鑑於此,需要包含一定範圍的數字作為引數,以在設定範圍內收集質數。

首先要做的是建立一個函式,以將給定範圍內的所有質數收集到一個列表中。對於此函式,迴圈該範圍內的所有數字,並檢查是否只有 1 和它本身是可除數。

def primesInRange(x, y):
    prime_list = []
    for n in range(x, y):
        isPrime = True

        for num in range(2, n):
            if n % num == 0:
                isPrime = False

        if isPrime:
            prime_list.append(n)
            
    return prime_list

print(primesInRange(100, 250))

輸出將列印從給定範圍 100 到 250 的所有質數。

輸出:

[101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151, 157, 163, 167, 173, 179, 181, 191, 193, 197, 199, 211, 223, 227, 229, 233, 239, 241]

下一步是根據函式 primesInRange() 返回的質數範圍內生成一個隨機數。

在 Python random 模組下,它具有一個名為 choice() 的函式,該函式從給定的可迭代或序列中選擇一個隨機元素。

給定上面實現的函式 primesInRange(),使用列表變數捕獲返回值,並使用 random.choice() 在列表中選擇一個隨機質數。使用 choice() 函式之前,不要忘記匯入 random 模組。

import random

prime_list = primesInRange(100,250)
randomPrime = random.choice(prime_list)

print('Generated random prime number: ', randomPrime)

樣本隨機輸出:

Generated random prime number:  191

這是此解決方案的完整原始碼。

import random

def primesInRange(x, y):
    prime_list = []
    for n in range(x, y):
        isPrime = True

        for num in range(2, n):
            if n % num == 0:
                isPrime = False
                
        if isPrime:
            prime_list.append(n)
    return prime_list

prime_list = primesInRange(100,250)
randomPrime = random.choice(prime_list)

print('Generated random prime number: ', randomPrime)
Rayven Esplanada avatar Rayven Esplanada avatar

Skilled in Python, Java, Spring Boot, AngularJS, and Agile Methodologies. Strong engineering professional with a passion for development and always seeking opportunities for personal and career growth. A Technical Writer writing about comprehensive how-to articles, environment set-ups, and technical walkthroughs. Specializes in writing Python, Java, Spring, and SQL articles.

LinkedIn

相關文章 - Python Number