当前位置:编程学习 > 网站相关 >>

谁能给我一个最佳解决方案

我需要把我的质因数分解方法运用在计算机上
一、质因数分解方法说明:
    我们知道一个数能否被2、3、5整除一眼就能看出,而不被2、3、5整除的数,其被3除后不是余1就必然余2。我的质因数分解方法就是对被3除后不是余1就必然余2的数进行完全分解。其中对被3除后余1的数且尾数分别是1、3、7、9的数分别总结出8个公式。对被3除后余2的数且尾数分别是1、3、7、9的数分别总结出8个公式。
二、编程所用步逐详细说明:(具体步逐)
1、设X为一个大合数。且几个变量之间的关系为:A、 N=(X-1)/6    B、 T=1、2、3 ......自然数(计算时随自然数递增循环)       
2、判断X的尾数是否是偶数或5,若是偶数或5,则2或5就是这个数的一个质数。若不是则进行第三步。
3、判断X是否能被3整除,若能被整除则3就是这个数的一个质数。若不被整除则判断X除3后余1或2。
4、若X除3余1或2则进行第五步。(第五步只说明一个公式的用法。其他公式雷同)
5、若X除3余1且X的尾数为1,则:A、L=5T-4  B、AT=(L+1)*(6L+1)+L
6、运算:在T=1、2、3 ......自然数时运算(AT-N)/5*(6L+1)能否被整除,若T=n时被整除,则(6L+L)和X/(6L+1)就分别是X的两个质因数。对(6L+L)和X/(6L+1)分别再进行以上步逐分解,直至最终分解到全部不能被整除,这些不能被整除的数都是质数了。若运算到T=n且AT大于等于N时。则转入下一个公式重新进行运算。(每次运算最少循环使用1个公式,最多循环8个公式。)
三、问题:
1、以上运算步逐在运用计算机编程时,对一个大合数X有位数限制吗?
2、若对X位数不限制来实现以上运算,能使用什么计算机语言(详细有几种)?
3、以上运算在家用计算机上能实现吗?
联系方式:QQ:358267699    邮箱:358267699QQ.COM --------------------编程问答-------------------- 考虑一个大合数 x = 2*p , p 是一个大素数, 你的算法效率如何?

回答你的问题,仅做参考,我没写过因式分解的算法,快速的分解是个世界难题:) 

>>1、以上运算步逐在运用计算机编程时,对一个大合数X有位数限制吗?
当然有限制。32位计算机 一般正整数表示范围 (1 ~ 2^32 ), 64位计算机一般是 (1~2 ^64)。

>>2、若对X位数不限制来实现以上运算,能使用什么计算机语言(详细有几种)?
如果不限制大小,你需要自己编程实现任意精度的大整数的运算(加、减、乘、除、取模,很多很多)。当然已经有人写好了这些程序,比如 GNU MP(http ://www.swox.com/gmp ),或者一些现成的软件包 Maple 和 Mathematica 。 这和使用什么计算机语言没太大关系,  C , JAVA , Perl 都可以,实际上绝大部分语言都可以,但都必须额外实现,语言自身没有这个功能。

>>3、以上运算在家用计算机上能实现吗?
当然可以。目前,家用计算机一般指 32位计算机,可预见的未来应该指64位计算机。

你的帖子 一、二部分看上去象学数学的。
但你问的问题1),2), 3)证明你不是学计算机的。问题 2) 好像又说明你不是学数学的。学数学的应该都知道 Male 和 Mathematica 软件包吧。



--------------------编程问答-------------------- Jamesonang你好!
    非常感谢你对我的问题有个回应,是的我不是学计算机的,而且对计算机以及计算机编程一窍不通。同时我对数学方面的知识仅停留在20多年前基础,我只是个数学爱好者,而且主要是对基础数论方面比较感兴趣。此次上网发帖的目的主要是寻找一位计算机高手来帮我实现------把我的质因数分解理论应用在计算机上。具体说明如下:
一、我的质因数分解方法应用说明
    我的质因数分解理论已在十多年前中科院《科学新闻》周刊发表过。而且论证方法是用国内数论专家否论定过的基础数学方法完成的(专家认为在基础数学中无法实现对质因数的完全分解)。其思路我已在帖中说明,所以我只对质因数分解方法应用作以说明。
1、我的质因数分解方法是对质因数分解的终结者,无论任何数(素数除外)都能把它分解开。即不受计算位数的限制。
2、运用它能把所有的素数找出来(只取决于计算机而不是方法问题),并能按顺序排列素数。
3、运算速度方面我不能枉加评论,但我为了验证我这套理论的准确性和快速性,我和同学一起用FOX编写了一个简单程序(因为计算机知识太浅薄不知什么原因只能计算14位数)。经反复验算不但准确无误,而且速度特快,一般运算14位数在数十秒内完成(若在第一个公式中算出速度在几秒内完成,若循环到第八个公式中算出速度在1分钟内完成)。据报道日本富士通公司2006年9月最新研制出一台用于分解质因数的专用计算机,它分解一个128位数用了一个月时间。而若能把我的方法运用到计算机中。运算速度决不会是一个月,应该是几天内就可完成。
二、你昨天的回帖我已反复看过多遍,部分内容我似懂非懂,部分内容我不懂。具体说:
1、我的质因数分解法在计算机中运用能达到128位数的计算吗?要求计算机是32位还是64位计算机。
2、具体编程方法我不懂,但有没有一套完整的设计方案?若有一套完整的设计方案即使我看不懂没关系,我可以请教专业人士。
   对你的帮助我再次表示忠心的感谢,若有时间请指导我如何完成我的目标。 --------------------编程问答-------------------- To : lupiaoying() 
>>一般运算14位数在数十秒内完成(若在第一个公式中算出速度在几秒内完成,若循环到第八个
>>公式中算出速度在1分钟内完成)。据报道日本富士通公司2006年9月最新研制出一台用于分解
>>质因数的专用计算机,它分解一个128位数用了一个月时间。而若能把我的方法运用到计算机
>>中。运算速度决不会是一个月,应该是几天内就可完成。

你的推测是没有根据的,数位的大小和计算所需的时间不是线形关系,而是某种形式的指数关系,数位大一点,所需的时间会飞速增长(对更大的数位,所花时间会以年为单位增长).你给出的方法显然不是线性的。

分解因式的方法已经被很多数学家研究了很多年,想用初等方法快速分解是非常非常困难的。
另外,初等方法可以分解因式,但效率极低。当数变得的很大的时候,所需的时间成指数高速增长。

 关于指数增长,举个例子,给你一个概念 :
 假如计算某个运算,需要 2^n 次操作 (2的n次方),假设一次运算计算机需要0.01秒时间完成。
 1)  n 较小的时候,计算机算起来很快的。比如 n = 6,仅需要执行 64 次操作,即0.64秒完成
 2) 当 n = 60的时候,即 需要 2^60 次操作,所需要的时间超过1亿年

============
关于你给出的算法:

考虑一个很大的数, n = 2*p ,p是一个大素数。

按照你的方法,首先得到2是n的素因数,然后 考虑分解 p ( p = n/2)。
显然  p 除以 3 ,不是余1,就是余2 。 
假设余1,正好尾数是1,这将进行你算法的步骤 6。

你的步骤6 叙述的有些混乱。
>>6、运算:在T=1、2、3 ......自然数时运算(AT-N)/5*(6L+1)能否被整除,若T=n时被整
>>除,则(6L+L)和X/(6L+1)就分别是X的两个质因数。对(6L+L)和X/(6L+1)分别再进行
 1。T = n时,n是指什么? 
 2。6L+L 和x/(6L+1) 就分别是X的两个质因数, 显然 6L+L (L>1)不是质数。是否你打错了(6L+1)?
3。(AT-N)/5*(6L+1)是 ((AT-N)/5)*(6L+1) 还是 (AT-N)/(5*(6L+1)) ?

如果你的方法是正确的,我们来看看效率:
由于p是素数,显然(AT-N)/5*(6L+1)T =1,2....都不能被整除, 按照你的方法,需要一直计算到 AT大于等于N时, 这需要多少次除法?而且还没有结束,转而计算别的公式,直到刚好找到某个公式的计算结果 等于 p.

最终找到分解结果即 n = 2*p .

我觉得你的方法很大程度就是试除法,只不过是分情况的试除法。大整数的除法是非常费时间的,这同小数的除法有很大的不同。

=====
--------------------编程问答-------------------- Jamesonang你好!
你的步骤6 叙述的有些混乱。
>>6、运算:在T=1、2、3 ......自然数时运算(AT-N)/5*(6L+1)能否被整除,若T=n时被整
>>除,则(6L+L)和X/(6L+1)就分别是X的两个质因数。对(6L+L)和X/(6L+1)分别再进行
 1。T = n时,n是指什么? 
 2。6L+L 和x/(6L+1) 就分别是X的两个质因数, 显然 6L+L (L>1)不是质数。是否你打错了(6L+1)?
3。(AT-N)/5*(6L+1)是 ((AT-N)/5)*(6L+1) 还是 (AT-N)/(5*(6L+1)) ?
说明一:
1、一个合数X是指两个或两个以上质数的乘积,所以(6L+1)可以是一个质数也可以是几个质数的成积。
2、T = n时,n是指什么?是说:X是一个合数的前提下T为某个自然数时,这个合数就被分解开。
3、公式应为:(AT-N)/(5*(6L+1))
说明二:
1、我所给的“编程所用步逐详细说明:(具体步逐)”是对所要分解的这个数X没有任何要求(即X位数不受限制,也可以是奇偶数)。X可以是两个或两个以上质数的乘积,而且每个质数的位数不受限制。这只是一个能分解任何数的通用程序,而不是分解一个大质数乘积数的快速办法。
2、若要快速分解一个大质数的乘积,我们在设置T时按位数分段取值,即估计出(6L+1)位数的多少来取T值(可设计成T在不同取值范围内的程序)。这样将大大缩短运算时间。
3、我的方法就是试除法。而且(5*(6L+1))的大小随T值的增加是否成指数增长我没有论证过,但是他的增长速度也是成几何速度增加。所以在运算速度上应该不会慢。

能与你进行沟通我再次表示衷心的感谢!如果你有兴趣且能实现编程请与我联系。我可以给你一组解题公式进行试验。在你认为可行的情况下我们再谈下一步合作的办法。
联系电话:13369108860   QQ:358267699
2、 --------------------编程问答--------------------

=====
关于你的方法,我并没有完全搞清楚。但 找到某个L 使得 5*(6L+1)| (AT -N),需要很多步除法,大整数的除法是很费时间的。

在实现前,你仔细分析一下你的算法,分析一下效率。
或者看看 <初等数论及其应用> 是本英文书,如果你英文还可以的话。

如果不追求效率,只是寻找一个分解的方法,我想 不断的去除以小于 sqrt(n) 的素数就可以了。分解方法还有很多,在我说的那本书都有提及,但高效率的很少。目前还没有办法减少到多项式时间。

感谢你的信任。但是很遗憾,最近我正在写论文,可能时间有所限制(被一个困难问题卡住),也只是每天花点时间上网排解一下,而且我不是数学系的。 最好的办法还是你自己实现,不用通过编程,使用现成的数学软件(Maple 或 Mathematica) ,因为你自己对你的方法最了解。Maple 和 Mathematica  使用方法网上搜一下,很多。









--------------------编程问答-------------------- Jamesonang你好!
    通过几天网上探讨,我对数易做图算方法有了进一步的了解,同时拓展了思路。我知道每个人在社会上都有自己的事,都要完成自己的工作任务。所以我的要求有些唐突和赊求。另外因为本人学历和年龄、工作关系我没有时间学习新知识。故要通过其他人才可以完成我的目标。你已经给我指明了实现目标的路径,我可以继续寻找。对你再次表示感谢!同时希望在你有时间的时候能继续帮助我,联系我。再见! --------------------编程问答-------------------- 网上似乎有现成的方法 --------------------编程问答-------------------- 关注 接分
补充:云计算 ,  云安全
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,