百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术资源 > 正文

每天学一点Python之NumPy基础11质因数

off999 2024-12-11 16:24 18 浏览 0 评论

质因数 (http://en.wikipedia.org/wiki/Prime_factor) 是指正好整除一个整数而不留余数的质数。对于大数来说,寻找质因数几乎是不可能的。

因此,质因数在密码学中得到了应用。然而,使用正确的算法--费马因式分解法(http://en.wikipedia.org/wiki/Fermat%27s_factorization_method)和 NumPy--对于小数来说,因式分解变得相对容易。

其原理是根据下式将一个数 N 分解成两个数 c 和 d:

我们可以递归地应用因式分解,直到得到所需的质因数。

这需要四个步骤,让我们来看看是如何完成的。

算法要求我们对 a 的值进行多次试验。

首先 我们将创建一个包含试验值的数组。创建一个 NumPy 数组可以省去循环。

不过,在创建数组时要注意,不要创建占用内存过大的数组。在我的系统中,一百万个元素的数组大小似乎恰到好处:

a = np.ceil(np.sqrt(n))
lim = min(n, LIM)
a = np.arange(a, a + lim)
b2 = a ** 2 - n

我们使用 ( ceil ) 方法按元素顺序返回输入值的上限。

第二步 获取 b 数组的小数部分。现在我们要检查 ( b ) 是否是正方形。使用名为 ( modf ) 的 NumPy 方法来获取 ( b ) 的小数部分。

数组的小数部分:

fractions = np.modf(np.sqrt(b2))[0]

第三步 查找 0 分数。调用 ( where ) NumPy 方法查找零分数的索引,其中分数部分为 0:

indices = np.where(fractions == 0)

第四步 找出第一个出现的零分数。

首先,使用上一步的索引数组调用 NumPy 方法 ( take ),获取零分率的值。然后使用 NumPy 方法 ( ravel ) 将数组网格化:

a = np.ravel(np.take(a, indices))[0]

这一行有点复杂,但确实展示了两种有用的方法。如果写成

a = a[indices][0]

你现在需要知道发生了什么?

在本节中,我们应用了一组有用且有趣的 NumPy 方法,这些方法的说明如下:

Method Name

Method Description

ceil()

计算数组元素的上限(参见 http://docs.scipy.org/doc/numpy/reference/generated/numpy.ceil.html)

modf()

返回浮点数的小数部分和积分部分(参见 http://docs.scipy.org/doc/numpy/reference/generated/ numpy.modf.html)

where()

根据条件返回数组索引(参见 http://docs.scipy.org/doc/numpy/reference/generated/numpy.where.html)

ravel()

返回一个扁平化数组(参见 http://docs.scipy.org/doc/numpy/reference/generated/numpy.ravel.html)

take()

从数组中提取元素(参见 http://docs.scipy.org/doc/numpy/reference/generated/numpy.take.html)

相关推荐

u盘装机制作软件哪个比较好(u盘装机软件推荐)

windows微软官方原版系统加上微软的U盘系统制作工具。MediaCreationTool来制作成U盘系统引导盘后来安装系统最纯净安全了。微peu盘驱动好。大白菜老毛桃什么的都用过,都是可以用的,...

windows7家庭版密钥激活码(win7家庭版激活密钥最新)

首先,在桌面上右键点击“计算机”,然后选择“属性”,在窗口底部找到“激活Windows”选项,点击它。然后,选择“在线激活”,输入你的Windows7激活密钥。如果你没有激活密钥,你可以购买一个或者...

win10好还是win7旗舰版好(windows10好还是windows7旗舰版好)

对于个人用户而言,我们更建议购买电脑装Windows10系统。以下是一些原因:兼容性更好:Windows10是微软最新的操作系统,支持大量的最新硬件和驱动程序,高度兼容大多数软件和设备。相比之下,...

win10系统自动重启频繁(win10系统经常自动重启)
  • win10系统自动重启频繁(win10系统经常自动重启)
  • win10系统自动重启频繁(win10系统经常自动重启)
  • win10系统自动重启频繁(win10系统经常自动重启)
  • win10系统自动重启频繁(win10系统经常自动重启)
2010office激活密钥25个字符
2010office激活密钥25个字符

步骤/方式1officeprofessionalplus2010:(office专业版)6QFdx-pYH2G-ppYFd-C7RJM-BBKQ8Bdd3G-xM7FB-Bd2HM-YK63V-VQFdKVYBBJ-TRJpB-QFQ...

2025-11-07 01:03 off999

刷机(刷机软件)

答:用下步骤可把电脑刷机:1、制作启动U盘,如大白菜U盘启动盘,然后将下载的系统iso文件直接复制到U盘的GHO目录下。2、在需要刷机的台式电脑上插入U盘,重启后不停按F12、F11、Esc等快捷键打...

u盘装linux系统教程(u盘安装linux操作系统安装教程图解)

以制作Ubuntulinux系统为例:1、首先要下载Ubuntu系统,在搜索Ubuntu,打开Ubuntu官网。2、然后在下载那里,选择桌面版。3、选择好版本之后,点击下载。4、随后跳转到一个网页,...

系统软件卸载器下载(系统软件卸载器专业版)

小米手机清理安装包有两个方法:1.用安全中心清理,步骤如下:打开安全中心,点击垃圾清理点击右上角的手机瘦身屏幕滑到底部,有一个安装包清理2.用文件管理清理,步骤如下:打开文件管理,选择安装包...

电脑开机不了怎么弄(电脑开机不了怎么弄回来)

1、打开电脑,点击【开始】键,可以直接在桌面左下角点击,也可以点击键盘上的电源键;2、在跳出的菜单栏中点击【控制面板】;3、在【控制面板】页面中,找到【系统和安全】,并点击;4、找到操作中心页面,并点...

root权限获取下载(root权限获取教程)

你好!一般的安卓系统的手机都是可以root的,不过root的方法是不一样的。1,一般的手机可以直接在手机上用手机上的root的软件就可以的,一些root工具都可以的等等。2,在就是小米类型的手机直接刷...

下载百度软件(下载百度软件商店安装不了)
  • 下载百度软件(下载百度软件商店安装不了)
  • 下载百度软件(下载百度软件商店安装不了)
  • 下载百度软件(下载百度软件商店安装不了)
  • 下载百度软件(下载百度软件商店安装不了)
dell笔记本电脑如何重装系统
  • dell笔记本电脑如何重装系统
  • dell笔记本电脑如何重装系统
  • dell笔记本电脑如何重装系统
  • dell笔记本电脑如何重装系统
google浏览器安卓版(google浏览器安卓版华军软件园)
  • google浏览器安卓版(google浏览器安卓版华军软件园)
  • google浏览器安卓版(google浏览器安卓版华军软件园)
  • google浏览器安卓版(google浏览器安卓版华军软件园)
  • google浏览器安卓版(google浏览器安卓版华军软件园)
改ip地址的软件有哪些(改ip的软件真的有用吗)

没有绝对好用的IP修改器,ip修改器只有合适自己的才是最好的。因为IP修改器的使用环境不一样,每个ip修改器功能和特点不同,自己用途和范围选择合适的。比如,有些ip修改器适合修改ip地址,有的IP修改...

台式机安装系统步骤(绝尘侠台式机如何u盘安装系统)

中柏EZbookA13使用U盘重装系统:1、将u盘制作成【u启动u盘启动盘】,接着前往相关网站下载win系统存到u盘启动盘,重启电脑等待出现开机画面按下启动快捷键,选择u盘启动进入到主菜单,选取“【...

取消回复欢迎 发表评论: