原标题:因数分解(费马的方法)

触碰标题下面一行的“邵勇老师”查看所有文章;触碰“数学教学研究”, 关注本微信公众号(sx100sy)。 本公众号内容均由邵勇(北京)本人独创,欢迎转发,但未经许可不能转载。每周推送两到三篇内容上有份量的数学文章,但在行文上力争做到深入浅出。几分钟便可读完,轻松学数学。

特别声明,本人未曾授权任何网站(包括微博)、公众号或其他什么号转载北京邵勇原创的“数学教学研究”公众号的内容。建议您一定直接关注本公众号(sx100sy),这样有什么问题可以留言交流和发消息,我会诚恳回复。未经授权而转载我文章的地方丢失了很多功能,比如留言,比如发消息到我后台。未经授权而转载我文章的地方,毕竟还存留着贯穿于我文章中的图片(比如公式),图片的右下角都有原公众号的水印“微信号: sx100sy”,通过在微信中搜索“sx100sy”,一定可以找到原始的公众号,也就是本公众号《数学教学研究》(sx100sy)并加以关注。本公众号才是良好的交流平台和文明的生态环境。

今天讲如何把一个数分解成因数的乘积。这里介绍费马的方法。我用三个具体例子来展示这个方法的运行过程。

例1:

(1)待分解的数n=10379。计算√n(指n的开平方,下同)。它不是整数,否则10379就是一个平方数了,而平方数已完成了至少一步因数分解。

(2)取大于等于√n的正整数N。可写成N=[√n]+1,其中[ ]是取整函数。显然,N^2>n。

(3)求N^2-n。然后考察它是不是平方数。注意,N^2-n应该不是很大,所以,比较容易判断它是不是平方数。若是,则问题基本解决:可设这个平方数为M^2,则有M^2=N^2-n,即n=N^2-M^2。所以根据平方差公式便得到n=(N+M)(N-M)。若不是,则继续算(N+1)^2-n,看它是不是平方数,······一直进行下去,直到出现平方数为止,或根本不出现平方数(文后会讨论这种情况)。

(4)具体来说,√10379=101.877···。取N=102,则N^2=10404,于是

N^2-n=10404-10379=25

25=5^2,是平方数。所以n=(102+5)(102-5)=107×97。分解成功。两个因数能否再分解?文后有说明。

例2:

再来看n=93343的分解。√93343=305.52···。取N=306,则N^2=93636。于是,

293不是平方数,因为个位数是3(有一个快速判断一个数不是平方数的简易方法,就是看它的个位数是不是2,3,7,8,若是,则这个数不是平方数。这是因为一个数的平方,其个位数永远不可能为 2,3,7,8)。于是,继续算(N+1)^2-n。N+1=307。

(N+1)^2-n=307^2-93343

=94249-93343

=906

明显,它只比平方数900(=30^2)大一点点,而31^2=961,所以906不是平方数。继续算 (N+2)^2-n,

(N+2)^2-n=308^2-93343

=94864-93343

=1521

=39^2

结果是平方数。所以,

n=(308+39)(308-39)=347×269

这两个因数正好还都是素数,不能再分解了。

例3:

补充说明:

(1)我们用费马这种方法去分解的数一定是一个奇数。若是偶数,我们可以将其除以2,若结果还是偶数就再除以2,直至不再为偶数。然后我们再对这个奇数进行分解。

(2)我们可以不必知道这个待分解的奇数是不是合数,也有可能是素数。但费马的方法在进行过程中,若在某一步时成功分解,则原数是合数。这时这个合数被分解成了两个较小的奇数的乘积(两个因数必定都是奇数,因为原数是奇数)。成功分解之后,两个因数都还有可以再继续分解,可以继续用费马的方法进行,直到所有因数都为素数。

(3)很有可能费马方法进行下来,我们根本找不到某两个数它们的平方差等于原数。那么原数就是一个素数。这个是可以想得通的:因为若原数不是素数,则它一定可以写成两个奇数因数的乘积。而两个奇数的乘积是一定可以化为两个正整数的平方差的。比如,我们任意取两个奇数:359和283。计算出这两个数的差:359-283=76。这个差一定是一个偶数(奇数减奇数为偶数),所以,这个差的一半必然是整数,这里,76/2=38。那么,我们把大的奇数因数写成某数加上38,即:321+38。把小的奇数因数写成某数减去38,即:321-38。这时的两个奇数因数分别为: 321+38和 321-38。两项中均出现了321。这不是巧合,而是必然的,因为38是两奇数因数之差的一半。 也就是说,“求差—取半...”等步骤后,两因数的乘积出现(a+b)(a-b)形式,是必然的。于是,原数就可以写成两数的两方差:a^2-b^2。所以,我们通过费马的方法,一定可以找到这对a和b。也就是说,找不到的话,就说明原数一定是素数。

(4)费马方法有局限性,它在两因数比较接近的情况下才很有效。返回搜狐,查看更多

责任编辑:

整数分解 费马方法c语言,因数分解(费马的方法)相关推荐

  1. c语言 的表示方法,c语言运算符号的表示方法

    c语言运算符号的表示方法 答案:1  信息版本:手机版 解决时间 2020-03-30 17:11 已解决 2020-03-30 12:55 c语言运算符号的表示方法 全部回答 1楼 2020-03- ...

  2. C语言定义一个结构体方法,C语言结构体定义的方法汇总

    什么是结构体? 在C语言中,结构体(struct)指的是一种数据结构,是C语言中聚合数据类型(aggregate data type)的一类.结构体可以被声明为变量.指针或数组等,用以实现较复杂的数据 ...

  3. c语言效率最高排序方法,C语言综合实现所有排序方法及效率比较.doc

    C语言综合实现所有排序方法及效率比较 #include#include#include #include #define N 50000typedef char elemtype;typedef st ...

  4. c语言汇编混合编程方法,C语言和汇编语言混合编程方法

    摘要: C语言是一种高级的面向过程的开发语言,汇编语言是一种低级的面向机器的编程语言.两者在程序设计开发方面各有优劣,目前两者的混合编程得到了广泛的应用.本文通过具体的实例,说明了混合编程的基本方法, ...

  5. c语言作业班费收支管理系统,c语言班费收支系统-------二进制文件操作

    共约370行代码,撸了半天撸出来了 另附:学生成绩管理系统(附文档) 学生用餐管理系统 实现方式都不一样,可供参考. 班费收支系统 主要包含以下项目 班费收支编号,收入/支出,经办人.原因.金额.备注 ...

  6. c语言22阶乘太大,C语言计算大数阶乘的方法

    C语言计算大数阶乘的方法,整数,数组,阶乘,本文,格式 C语言计算大数阶乘的方法 易采站长站,站长之家为您整理了C语言计算大数阶乘的方法的相关内容. 本文实例为大家分享了C语言计算大数阶乘的具体代码, ...

  7. c语言作业 字符串替换,C语言字符串替换。解决方法

    当前位置:我的异常网» C语言 » C语言字符串替换.解决方法 C语言字符串替换.解决方法 www.myexceptions.net  网友分享于:2015-04-14  浏览:0次 C语言字符串替换 ...

  8. 【C语言中清空文件的方法】

    C语言清空文件内容 C语言中清空文件的方法 C语言中清空文件的方法 C语言中清空文件的方法很简单. 只要以 可写 的方式打开文件,就能将这个文件清空 #include <stdlib.h> ...

  9. html网页制作技巧,HTML语言网页制作技巧与方法.doc

    HTML语言网页制作技巧与方法 HTML语言网页制作技巧与方法 摘要:随着社会的进步,时代的发展,科学技术水平的不断提高,计算机技术已经深入到人们的生产生活,网络在人们的日常交流中起着非常重要的作用. ...

最新文章

  1. python opencv卡尺测量边缘距离
  2. Gradle学习网站
  3. superset安装配置
  4. Java 枚举:实现接口
  5. 安装jrebel热部署插件,并激活
  6. mysql离散查询_如何写出高性能的MySQL查询
  7. 消息称高通可供货华为:麒麟处理器真将绝版?
  8. 【Python五篇慢慢弹】快速上手学python
  9. 2020年mac上最值得使用的五大录屏软件
  10. 【算法工程师】华为技术面面试记录
  11. 配置案例| Modbus转Profinet网关与ARX-MA100微型空气质量监测系统连接
  12. 抖音小店开通及保证金详情;抖音小店商品上架详细流程。丨国仁网络资讯
  13. html半透明遮罩,如何制作网页半透明遮罩效果
  14. 智慧灯杆解决方案之智慧景区建设
  15. angular 访问图片路径错误
  16. 【QA】数学符号 word输入问题 在word里面怎么输入字母头顶上的那个小尖儿
  17. 6个高清图片素材网站,找图片素材就靠他们了
  18. 收废品小程序的推广策略与实践
  19. 多示例学习距离度量 (distance measures)和集合核 (set-kernel)
  20. excel组合汇总_Excel汇总20140224

热门文章

  1. 安卓ndk 忽略 error: undefined reference to '找不到符号
  2. Julia发布全功能调试器:4大新功能问世
  3. 解决联想拯救者Y7000安装ubuntu系统wifi无法连接以及关机卡死问题
  4. LeetCode162数组寻峰问题
  5. 进程管理API之find_get_pid
  6. matlab 根据长轴,短轴,中心坐标画椭圆
  7. 哈工大csapp大作业程序人生
  8. cmd命令查询电脑序列号_如何使用指令提示符查看电脑序列号
  9. Ramnit 蠕虫分析
  10. CV大牛/实验室主页