$\text{update 2019.8.18}$ 由于本人将大部分精力花在了cnblogs上,而不是洛谷博客,评论区提出的一些问题直到今天才解决。

下面给出的Pollard Rho函数已给出散点图。关于$Millar Robin$算法的时间复杂度在我的博客应该有所备注。由于本人不擅长时间复杂度分析,如果对于时间复杂度有任何疑问,欢迎在下方指出。

1.1 问题的引入

给定一正整数$N \in \mathbb{N}^*$,试快速找到它的一个因数。

很久很久以前,我们曾学过试除法来解决这个问题。很容易想到因数是成对称分布的:即$N$的所有因数可以被分成两块:$[1,\sqrt(N)]$和$[\sqrt(N),N]$.这个很容易想清楚,我们只需要把区间$[1,\sqrt(N)]$扫一遍就可以了,此时试除法的时间复杂度为$O(\sqrt(N))$.

对于$N \geqslant 10^{18}$的数据,这个算法运行起来无意是非常糟糕的.我们希望有更快的算法,比如$O(1)$级别的?

对于这样的算法,一个比较好的想法是去设计一个随机程序,随便猜一个因数.如果你运气好,这个程序的时间复杂度下限为$o(1)$.但对于一个$N \geqslant 10^{18}$的数据,这个算法给出答案的概率是$\frac{1}{1000000000000000000}$.当然,如果在$[1,\sqrt(N)]$里面猜,成功的可能性会更大.

那么,有没有更好的改进算法来提高我们猜的准确率呢?

2.1 用一个悖论来提高成功率

我们来考虑这样一种情况:在$[1,1000]$里面取一个数,取到我们想要的数(比如说,$42$),成功的概率是多少呢?显然是$\frac{1}{1000}$.

一个不行就取两个吧:随便在$[1,1000]$里面取两个数.我们想办法提高准确率,就取两个数的差值绝对值.也就是说,在$[1,1000]$里面任意选取两个数$i , j$,问$|

c语言用rho函数求复数模长,Pollard Rho 算法简介相关推荐

  1. 初学者  C语言如何通过函数求同心圆环面积

    C语言如何通过函数求同心圆环面积: #include <stdio.h> #include <stdlib.h> #define pr 3.1415926float getar ...

  2. matlab 求复数模值,matlab计算带有复数的函数,最后求复数函数的模,结果里面却有...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 matlab计算带有复数的函数,最后求复数函数的模,结果里面却有复数标志i,输入自变量,得到的结果确实是实数,不知道怎么回事; 代码如下: syms n2 ...

  3. c语言学习-编写函数求x的n次方的值

    编写函数求x的n次方的值 程序流程图: 代码: #include<stdio.h> long mul(int j ,int k) {int i; long mu=1; for(i=0;i& ...

  4. c语言用循环函数求平方,用C语言程序三种循环语句分别编写程序,求1-100的平方值?...

    C语言用for语句求1~100中是3的倍数的所有整数之和,提供两种解法如下: 第一种:这是比较经典的方法: #include int main(){int sum=0;for(int i=1;i 由热 ...

  5. 【C语言】分段函数求值 控制输出格式 float精确到小数点后几位

    案例如下 //分段函数求值 #include <stdio.h> //#include <math.h> int main() {float x,y;printf(" ...

  6. python abs函数能否求复数模_python中对复数的运算

    大家对复数想必都不陌生,那就来看看下面几道题能不能作正确? 第一题 a = 1.23e+4+9.87e+6j a.real 与 a.imag的值为: A 12300.0 B 1.23e + 4 C 9 ...

  7. python abs函数能否求复数模_python画图遇到复数值数据时应该用numpy.abs()函数还是numpy.real()函数...

    总是感觉搞懂了画图,然而每次遇到复数值的时候都感觉思路不是很清晰,比如,我们想要做函数numpy.exp(1j * x)的图像,我们可以看到此时当我们带入x值进入后会得到复数值.如果我们直接用该复数值 ...

  8. python abs函数能否求复数模_Python3 abs() 函数

    Python3 abs() 函数 描述 abs() 函数返回数字的绝对值. 语法 以下是 abs() 方法的语法: abs( x ) 参数 x -- 数值表达式,可以是整数,浮点数,复数. 返回值 函 ...

  9. C语言实现任意函数求不定积分

    求函数f在a和b点之间的定积分 要求具有通用性,可求任意函数的定积分(以下代码中my_fun可改为想求的函数) 输入数据 •积分上限a.积分下限b.分割段数n 梯形法求定积分 #include< ...

最新文章

  1. centos 找不到php.ini,centos找不到php.ini文件
  2. UA OPTI501 电磁波 求解Maxwell方程组的波动方程方法
  3. 2.3 快速搭建你的第一个系统,并进行迭代-深度学习第三课《结构化机器学习项目》-Stanford吴恩达教授
  4. case 日期when 范围_多个日期段如何分组 case when convert等用法
  5. boost::geometry:::detail::overlay::get_clusters用法的测试程序
  6. 关于PHP数组方法array_walk的疑问
  7. [css] 用css画出一把刻度尺
  8. C++ 的几个for 循环,范围for语句
  9. 57、Design Support Library 介绍及环境搭建
  10. Linux用户及用户组设置
  11. 《MYSQL必知必会》—10~13.创建计算字段、使用数据处理函数、使用聚集函数汇总数据,使用GROUP BY与HAVING分组数据及过滤
  12. dedecms读取多个类别信息
  13. 邮件服务器搬家,企业邮箱怎么“搬家”
  14. hdu_4742_Pinball Game 3D(cdq分治+树状数组)
  15. 《卫星通信》课程大作业——基于MATLAB的无线通信链路级仿真
  16. 【最全】BliBli,视频下载方法汇总!【最新】
  17. [和秋叶一起学ppt]四步教你变身高富帅ppt(笔记)
  18. 英语单词词性顺口溜_英语十大词性顺口溜
  19. 拒绝访问病毒解决方法
  20. wps表格l制作甘特图_如何制作甘特图(横道图)

热门文章

  1. 京东测试工程师想要从功能测试转成自动化测试,8年测试经验的领导给他这样的建议
  2. 五个不用本人出镜拍摄的短视频领域,要选择适合自己的,抓紧收藏
  3. [iOS]打开外部链接
  4. 上海腾享-代理经销国际国内知名品牌的LED染色灯,LEDpar灯,包括martin、ETC、珠江、彩熠
  5. 需求分析(Requirements Analysis)
  6. 用Python爬取了《扫黑风暴》数据,并将其可视化分析后,终于知道它为什么这么火了~...
  7. ugnx的钣金展开好用么?
  8. 初探京东云,一个改变世界的云服务商
  9. Win11 桌面快捷方式未全部显示的诡异现象及解决方法
  10. 2017.2.18Codeforces Round #398 (Div. 2)