热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

转载自某百度空间“素数分解为平方和”

素数分解为平方和定理:设p是素数,则p是两个数的平方和,当且仅当p≡1(mod4)或p2。要由p≡1(mod4)推出p是两个数的平方和需要
素数分解为平方和

定理:设p是素数,则p是两个数的平方和,当且仅当p≡1 (mod 4)或p=2。

要由p≡1 (mod 4)推出p是两个数的平方和需要使用费马的无限下降算法:设p≡1 (mod 4),目的是找出A2+B2=p的一组解。

1 先找出一组可行解满足A2+B2=Mp,其中M2≡-1 (mod p)的某个解,B取1。任取一个数1(p-1)/4 (mod p),则由24章的定理可知A2≡a(p-1)/2≡(a/p) (mod p),即A2不是1就是-1,而且概率都是50%。多取几次a,必定能找到A2≡-1 (mod p)的解。

2 计算u≡A,v≡B&#xff0c;且-0.5M<&#61;u,v<&#61;0.5M的u和v。

3 由于u2&#43;v2≡A2&#43;B2≡0 (mod M)&#xff0c;可设u2&#43;v2&#61;Mr&#xff08;1<&#61;r

4 相乘&#xff0c;即(u2&#43;v2)(A2&#43;B2)&#61;M2rp。

5 上式可化为(uA&#43;vB)2&#43;(vA-uB)2&#61;M2rp。

6 左右都除以M2&#xff0c;得

((uA&#43;vB)/M)2&#43;((vA-uB)/M)2&#61;rp。

可以证明M|uA&#43;vB且M|vA-uB。

7 若r&#61;1&#xff0c;则算法结束&#xff0c;否则转2.

算法每次都维护一组可行解A2&#43;B2&#61;Mp&#xff0c;且每次执行都使得M单调递减。实际上&#xff0c;可以证明r<&#61;M/2&#xff0c;即系数至少会折半&#xff0c;因此总的运行次数是log级的。

对于任意整数a,如果a&#61;p1p2&#xff0c;且p1,p2都是符合上一章中分解条件的素数。设p1&#61;u2&#43;v2,p2&#61;A2&#43;B2&#xff0c;则

a&#61; (u2&#43;v2)(A2&#43;B2)&#61;(uA&#43;vB)2&#43;(vA-uB)2

换句话说&#xff0c;只要a分解质因数后所有的因子都是可分解的素数&#xff0c;则a可分解为两个整数的平方和。

定理&#xff1a;(a) 设m是正整数&#xff0c;且m&#61;p1p2…pr&#xff0c;其中p1…pr互不相同。则m可分解为两个整数的平方和当且仅当所有的pi≡1 (mod 4)或等于2。

(b) m可写成m&#61;a2&#43;b2 (其中gcd(a,b)&#61;1)当且仅当它满足下列条件之一&#xff1a;

(i) m是奇数且任何m的素因数模4余1

(ii) m是偶数&#xff0c;m/2满足(i)。

再考虑一下勾股数&#xff0c;可以得出结论&#xff1a;

一个数c是一组本原勾股数中最大的数&#xff0c;当且仅当c的素因数都模4余1。


转:https://www.cnblogs.com/wujiawei/archive/2010/08/17/1801727.html



推荐阅读
  • 磁盘健康检查与维护
    在计算机系统运行过程中,硬件或电源故障可能会导致文件系统出现异常。为确保数据完整性和系统稳定性,定期进行磁盘健康检查至关重要。本文将详细介绍如何使用fsck和badblocks工具来检测和修复文件系统及硬盘扇区的潜在问题。 ... [详细]
  • 使用Numpy实现无外部库依赖的双线性插值图像缩放
    本文介绍如何仅使用Numpy库,通过双线性插值方法实现图像的高效缩放,避免了对OpenCV等图像处理库的依赖。文中详细解释了算法原理,并提供了完整的代码示例。 ... [详细]
  • 深入理解Cookie与Session会话管理
    本文详细介绍了如何通过HTTP响应和请求处理浏览器的Cookie信息,以及如何创建、设置和管理Cookie。同时探讨了会话跟踪技术中的Session机制,解释其原理及应用场景。 ... [详细]
  • 本文详细介绍了如何使用Python编写爬虫程序,从豆瓣电影Top250页面抓取电影信息。文章涵盖了从基础的网页请求到处理反爬虫机制,再到多页数据抓取的全过程,并提供了完整的代码示例。 ... [详细]
  • 本次考试于2016年10月25日上午7:50至11:15举行,主要涉及数学专题,特别是斐波那契数列的性质及其在编程中的应用。本文将详细解析考试中的题目,并提供解题思路和代码实现。 ... [详细]
  • 本文详细介绍了 BERT 模型中 Transformer 的 Attention 机制,包括其原理、实现代码以及在自然语言处理中的应用。通过结合多个权威资源,帮助读者全面理解这一关键技术。 ... [详细]
  • QUIC协议:快速UDP互联网连接
    QUIC(Quick UDP Internet Connections)是谷歌开发的一种旨在提高网络性能和安全性的传输层协议。它基于UDP,并结合了TLS级别的安全性,提供了更高效、更可靠的互联网通信方式。 ... [详细]
  • QBlog开源博客系统:Page_Load生命周期与参数传递优化(第四部分)
    本教程将深入探讨QBlog开源博客系统的Page_Load生命周期,并介绍一种简洁的参数传递重构方法。通过视频演示和详细讲解,帮助开发者更好地理解和应用这些技术。 ... [详细]
  • 技术分享:从动态网站提取站点密钥的解决方案
    本文探讨了如何从动态网站中提取站点密钥,特别是针对验证码(reCAPTCHA)的处理方法。通过结合Selenium和requests库,提供了详细的代码示例和优化建议。 ... [详细]
  • 本文探讨了如何像程序员一样思考,强调了将复杂问题分解为更小模块的重要性,并讨论了如何通过妥善管理和复用已有代码来提高编程效率。 ... [详细]
  • 本文探讨了Hive中内部表和外部表的区别及其在HDFS上的路径映射,详细解释了两者的创建、加载及删除操作,并提供了查看表详细信息的方法。通过对比这两种表类型,帮助读者理解如何更好地管理和保护数据。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • 本文介绍了Java并发库中的阻塞队列(BlockingQueue)及其典型应用场景。通过具体实例,展示了如何利用LinkedBlockingQueue实现线程间高效、安全的数据传递,并结合线程池和原子类优化性能。 ... [详细]
  • 探讨一个显示数字的故障计算器,它支持两种操作:将当前数字乘以2或减去1。本文将详细介绍如何用最少的操作次数将初始值X转换为目标值Y。 ... [详细]
  • 深入解析:手把手教你构建决策树算法
    本文详细介绍了机器学习中广泛应用的决策树算法,通过天气数据集的实例演示了ID3和CART算法的手动推导过程。文章长度约2000字,建议阅读时间5分钟。 ... [详细]
author-avatar
红山村樵夫_799
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有