python大数快速判断质数与分解质因数
python 大数质因数分解
数字较小时:
def is_prime(number):for i in xrange(2, int(math.sqrt(number))+2):if number %i == 0 and number !=i:return Falsereturn True
数字较大时:
判断是否为质数:isPrime(num)
质因数分解:factor(num)
#coding:utf-8
from random import randint
"""
快速质因数分解
"""def quickMulMod(a,b,m):'''a*b%m, quick'''ret = 0while b:if b&1:ret = (a+ret)%mb//=2a = (a+a)%mreturn retdef quickPowMod(a,b,m):'''a^b %m, quick, O(logn)'''ret =1while b:if b&1:ret =quickMulMod(ret,a,m)b//=2a = quickMulMod(a,a,m)return retdef isPrime(n,t=5):'''miller rabin primality test, a probability resultt is the number of iteration(witness)'''t = min(n-3,t)if n<2:print('[Error]: {} can\'t be classed with prime or composite'.format(n))returnif n==2: return Trued = n-1r = 0while d%2==0:r+=1d//=2tested=set()for i in range(t):a = randint(2,n-2)while a in tested:a = randint(2,n-2)tested.add(a)x= quickPowMod(a,d,n)if x==1 or x==n-1: continue #success,for j in range(r-1):x= quickMulMod(x,x,n)if x==n-1:breakelse:return Falsereturn Truedef gcd(a,b):while b!=0:a,b=b,a%breturn adef factor(n):'''pollard's rho algorithm'''if n==1: return []if isPrime(n):return [n]fact=1cycle_size=2x = x_fixed = 2c = randint(1,n)while fact==1:for i in range(cycle_size):if fact>1:breakx=(x*x+c)%nif x==x_fixed:c = randint(1,n)continuefact = gcd(x-x_fixed,n)cycle_size *=2x_fixed = xreturn factor(fact)+factor(n//fact)
python大数快速判断质数与分解质因数相关推荐
- Python判断质数合数,质因数分解并得到所有因数
Python判断质数合数,质因数分解并得到所有因数 判断质数.合数 质因数分解 得到所有正因数 完整程序 运行效果 判断质数.合数 要判断一个大于一的正整数是质数还是合数,只需判断在区间[2, √x] ...
- 【C++】快速判断质数(6的倍数法)、快速获取n以下的质数(欧拉筛)板子
快速判断质数(6的倍数法)板子 bool judge(int num) {if (num == 2 || num == 3) {return true;}//如果num不在6的倍数附近,则不是素数if ...
- 【数学专题】 筛质数、分解质因数和快速幂
筛质数 质数筛法分为埃氏筛和线性筛. 埃氏筛没有线性筛时间复杂度好,不常用,但是他的时间复杂度分析方法却比较常用. 埃氏筛的时间复杂度为O(nloglogn)≈O(n)O(nloglogn)≈O(n) ...
- python 如何快速判断列表是否相同_Python-检查列表中的所有元素是否相同
小编典典 通用方法: def checkEqual1(iterator): iterator = iter(iterator) try: first = next(iterator) except S ...
- python 如何快速判断列表是否相同_python如何判断两个list是否相等
python中的cmp() 方法用于比较两个列表的元素. cmp()方法语法cmp(list1, list2) 参数 list1 -- 比较的列表. list2 -- 比较的列表. 返回值 如果比较的 ...
- python 正整数因数分解_python将一个正整数分解质因数.
用户提问 # -*- coding: UTF-8 -*- def reduceNum(n): print '{} = '.format(n), if not isinstance(n, int) or ...
- python定义函数判断质数_用python3判定素数(自己定义的函数),这几步你要了解...
本文,用python3写一个判别素数的自定义函数. 工具/材料 python3.6 math模块 time模块 操作方法 01 根据素数的定义,写一个粗略的自定义函数: def p(n): if st ...
- python显示给定数字因数分解_Python练习题 010:分解质因数
[Python练习题 010]将一个正整数分解质因数.例如:输入90,打印出90=2*3*3*5. -------------------------------------------------- ...
- python判断数字奇偶_python如果快速判断数字奇数偶数
python如果快速判断数字奇数偶数 这篇文章主要介绍了python如果快速判断数字奇数偶数,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 使用 按 ...
最新文章
- c语言不能写入文件,求大神看看为什么不能将数据写入文件
- 按值传递按引用传递按地址传递
- 跟随鼠标走的文字的html代码,跟随鼠标走的文字的HTML代码
- 黑客数字雨html单页,Hei客帝国数字雨.html
- CJCMS系列---慢慢讲电子商务在项目中的实践之前言
- IntelliJ IDEA 设置代码检查级别
- 经纬度绘图_用编程赋能工作系列——百度VS高德经纬度互转
- 1 echo();2 print();3 die();4 printf();5 sprintf();6 print_r();7 var_dump(); 区别
- XML编程-DOM4J
- matlab的函数要写在哪,matlab函数库在哪
- 投标工作笔记001---竞标和围标
- HowNet介绍及使用
- 配置MAC地址表实现绑定和过滤
- Java中四大代码块的执行顺序(附code)
- 2021高考武汉查询成绩时间,2021高考完什么时候可以查分数 查成绩的时间
- 913微型计算机原理,微机原理与接口技术(铁道大学)第9章定时器计数器.ppt
- 第3章 Stata描述统计
- 神经网络——基础思想
- IP地址(IPv4)
- 排序算法之时间复杂度O(n2)
热门文章
- html 关键字是什么,html中使用关键字的技巧是什么?
- 最纯净的重装系统,不需要各种重装非官方的工具(U盘启动,附分区方法)
- 所有的伟大,源于一个勇敢的开始
- 传奇服务器都有哪些文件,传奇服务端MonUseItems文件夹什么用?
- Cisco网络技术基础实训
- gcc 运行指定动态库的三种方法
- 地理信息科学前沿-[热词]
- php e all e notic,PHP error_reporting(E_ALL ^ E_NOTICE)一些资料整理
- python读取数据画三维图_Python实现读取txt文件并画三维图
- Linux的基础配置