首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python中高斯素数和高斯素数的可视化

Python中高斯素数和高斯素数的可视化
EN

Stack Overflow用户
提问于 2022-03-28 00:21:24
回答 1查看 98关注 0票数 0

我想要创建两个图,一个在复平面上有高斯素数,另一个表示这个复数的(高斯)素数。我可以同时计算原始性(第一个场景)和因子(第二个),但无法找到可视化的正确格式。

在第一种情况下,我只想对给定维数的复杂平面中的每一个质数画一个勾,就像在这个Wolfram Mathworld页面中所示。我已经定义了一个具有以下签名的函数:is_gaussian_prime(c : complex) -> bool。我所缺少的是一个合适的数据结构,用于存储从real_minreal_max,从imag_minimag_max的所有复数的首要信息,以及可视化该数据结构的方法。我已经将seaborn.relplot()作为文档化的这里查看过了,但无法完全理解,我希望数据是什么样的形状。

我想使用relplot()的原因是,在第二个场景中,允许为不同数量的素因子绘制不同大小的滴答。这意味着我想用这样的方式画出第二幅图,它的大小代表了这个特定高斯数的素数。更准确地说,在第二幅图中,我想用不同的颜色画出高斯素数,而对于有更多因素的复合材料,我想把它画成黑色,具有更大的标记尺寸。对于本例,我有一个已经定义的以下签名的函数:number_of_gaussian_factors(c : complex) -> int

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-03-28 20:46:21

您可以生成一个高斯素数列表,然后在实部和虚部上调用sns.scatterplot

代码语言:javascript
复制
from matplotlib import pyplot as plt
import seaborn as sns
import numpy as np
from sympy.ntheory.primetest import is_gaussian_prime

N = 200
prime_set = set()
for i in range(N):
    for j in range(N):
        if is_gaussian_prime(i + j * 1j):
            prime_set.add(i + j * 1j)
            prime_set.add(i - j * 1j)
            prime_set.add(-i + j * 1j)
            prime_set.add(-i - j * 1j)
primes = np.array(list(prime_set))
plt.figure(figsize=(15, 15))
ax = sns.scatterplot(x=np.real(primes), y=np.imag(primes), color='tomato', s=20)
ax.set_aspect('equal')
plt.show()

计算素数似乎是再复杂一点,不太对称(例如,2=(1+i)(1-i)2i=i(1+i)(1-i))。您有一个高斯整数数组(例如gaussian_ints)和伴随的因素数组(例如,num_factors),您可以调用例如sns.scatterplot(x=np.real(primes), y=np.imag(primes), size=num_factors, hue=num_factors)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71641277

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档