java正整数分解成互不相同的三个质因数(素数)之和,如果不能就抛出异常,能的话就打印出来。。

如题所述

第1个回答  2013-05-16
先找出这个比这个数小的所有素数,用数组保存,如果素数不够三个直接抛出异常,如果够的话,写三个for循环,遍历三次素数数组,相加与原数比较,若有与原数相等的,则用一个结果数组保存当前三个数。最后看结果数组的size()是否为零,若不为零,遍历输出里面的数。
过程可能比较繁琐,但是应该能做出来,质因数跟着类似。
第2个回答  2013-05-16
是质因数,还是质数,这两者有很大区别

1. 如果是质因数,则题意为:
X = A*B*C
X = A+B+C
这是不可能的。

2. 如果是分解成质数之和,则可以用比该正整数小的质数迭代相加判断即可。追问

哦。。对,,我弄错了。。那分解成三个质因素之积怎么写?分解成三个质素之和怎么写??求大神 赐解。。。

追答

分解成质因数之积,比较简单:
1. 找能整除X的最小质数,即, X = AY(其中A为最小质因数),记录A
2. 若A小于或等于上次找到的质因数,则不能按条件分解,返回
3. 若Y=1,则分解结束,判断已记录的A的数量,如果为三个,则找到结果,输出这三个数;如果不是,则不能按条件分解,返回

2. 设X=Y,继续第1步

分解成质数之和就比较难了:
1. 若X小于10(也就是2+3+5),则不能按条件分解,返回

2. 找出小于等于X-5所有质数(5=2+3,最小的俩质数和)
3. 从小到大,迭代所有三个质数之和
4. 如果和等于X,则找到结果,则输出这三个数
5. 如果和小于X,则继续迭代
6. 如果和大于X,则不能按条件分解,返回

本回答被提问者和网友采纳
相似回答