在 Python 中生成随机质数

Rayven Esplanada 2023年10月10日
在 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