用java语言编写一个数的最小因子

 我来答
ahcc08
推荐于2018-04-13 · 知道合伙人软件行家
ahcc08
知道合伙人软件行家
采纳数:11853 获赞数:51941
拥有丰富的软件开发经验。

向TA提问 私信TA
展开全部


import java.util.List;

public class StackOfIntegers {
//存放分解的素数
List<Integer> list = new ArrayList<Integer>();

//主方法,求分解素数
public void getSub(int sum){
//获取中间数的后一个数,保证中间数可以在下面的for中被循环
int middle = getMiddleAfter(sum);
//2是最小的素数,从2开始循环除
for(int i=2;i<middle;i++){
//如果i不为素数,直接跳过,循环下个数
if(!isSuShu(i)){
continue;
}
//余数
int yu = sum%i;
//商
int last = sum/i;
if(yu==0){
//余数为0,i为sum的因子,填入list
list.add(i);
//如果商为素数,则添加商到list,程序结束
if(isSuShu(last)){
list.add(last);
return;
}
//如果商不为素数,递归商调用本方法,分解商
getSub(sum/i);
//如果sum可以被素数因子整除,直接分解商,后续的因子不必再循环
break;
}
}
}

//如果可以被2整除,则+1,否则+1后再除以2
public int getMiddleAfter(int num){
if(num%2==0){
return num/2+1;
}else{
return (num+1)/2;
}
}

//判断是否是素数
public boolean isSuShu(int num){
boolean flag = true;
for(int i=2;i<num;i++){
if(num%i==0){
flag = false;
break;
}
}
return flag;
}
/**
 * @param args
 */
public static void main(String[] args) {
// TODO Auto-generated method stub
StackOfIntegers s = new StackOfIntegers();
s.getSub(120);
System.out.println(s.list);
}

}
xsccgtzpi
2014-12-09
知道答主
回答量:8
采纳率:0%
帮助的人:1万
展开全部
用java语言编写一个数的最小因子
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Visy12345e53b26b
2014-12-09 · TA获得超过301个赞
知道小有建树答主
回答量:292
采纳率:16%
帮助的人:72.7万
展开全部
最小因子是什么?麻烦说清楚点
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式