[color=blue]提示用户输入一个正整数,然后以降序显示它的所有最小因子,例如:120,那么显示的最小因子为5,3,2,2,2。使用StackOfIntegers类来存储这些素数(例如:2,2,2,3,5)获取这些按倒序显示这些因子。
我不会用StackOfIntegers来显示因子啊
java 关于编写一个显示一个整数的所有最小因子
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
3条回答 默认 最新
- zyn010101 2013-08-14 20:16关注
[code="java"]
package com.zyn.iteye;import java.util.ArrayList;
import java.util.List;public class StackOfIntegers {
//存放分解的素数
List list = new ArrayList();//主方法,求分解素数 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); }
}
[/code]
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 求daily translation(DT)偏差订正方法的代码
- ¥15 js调用html页面需要隐藏某个按钮
- ¥15 ads仿真结果在圆图上是怎么读数的
- ¥20 Cotex M3的调试和程序执行方式是什么样的?
- ¥20 java项目连接sqlserver时报ssl相关错误
- ¥15 一道python难题3
- ¥15 牛顿斯科特系数表表示
- ¥15 arduino 步进电机
- ¥20 程序进入HardFault_Handler
- ¥15 关于#python#的问题:自动化测试