在 Python 中检查质数的实现及可视化

引言

质数是大于1的自然数中仅有两个正因数的数字,即1和它本身。在许多实际问题中,例如密码学、数据加密等,质数的使用非常广泛。本文将介绍如何在 Python 中实现质数的判断,并通过可视化手段来展示质数的分布。

实际问题

我们希望创建一个简单的 Python 程序,该程序接收一个正整数 n,并返回从 1 到 n 的所有质数。此外,我们还将通过饼状图和类图对结果进行可视化,以便更清晰地理解质数的特性。

Python 实现

在 Python 中,判断一个数是否为质数可以通过以下逻辑实现:

  1. 如果该数小于2,直接返回 False。
  2. 如果该数为2,返回 True(2是唯一的偶数质数)。
  3. 对于更大的数字,从3开始检查到该数的平方根,如果能被其他数字整除,则返回 False。

以下是实现代码:

def is_prime(num):
    if num < 2:
        return False
    if num == 2:
        return True
    if num % 2 == 0:
        return False
    for i in range(3, int(num ** 0.5) + 1, 2):
        if num % i == 0:
            return False
    return True

def prime_numbers_upto_n(n):
    return [i for i in range(2, n + 1) if is_prime(i)]
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
使用示例

我们可以通过输入一个正整数来查看它以下的所有质数:

n = 30
primes = prime_numbers_upto_n(n)
print(f"从1到{n}的质数有: {primes}")
  • 1.
  • 2.
  • 3.

结果可视化

接下来,我们将结果使用饼状图进行可视化,以便更好地理解质数在一组数字中的分布情况。我们可以使用 matplotlib 库来绘制饼图。

import matplotlib.pyplot as plt

def plot_primes(primes, n):
    non_primes = n - len(primes)
    labels = ['质数', '非质数']
    sizes = [len(primes), non_primes]
    
    plt.pie(sizes, labels=labels, autopct='%1.1f%%', startangle=90)
    plt.axis('equal')  # 使饼图为圆形
    plt.title(f"从1到{n}的质数和非质数分布")
    plt.show()

plot_primes(primes, n)
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.

类与关系可视化

为了更好地理解我们的实现,可以用类图展示相关的功能及其方法。

PrimeChecker +is_prime(num: int) : bool +prime_numbers_upto_n(n: int) : list

结论

本文介绍了如何在 Python 中实现质数的判断及其应用,并用可视化的方法展示结果。我们使用了饼图展示质数与非质数的比例,同时提供了类图以帮助理解代码的结构。这种方法不仅让我们清楚地看到质数的分布特征,也为进一步的数学研究和应用提供了基础。在实际应用中,质数的分布将继续在许多领域中扮演着关键角色。希望你的 Python 学习旅程能因此有所启发!