[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 请问这个是什么意思?
- ¥15 STM32驱动继电器
- ¥15 Windows server update services
- ¥15 关于#c语言#的问题:我现在在做一个墨水屏设计,2.9英寸的小屏怎么换4.2英寸大屏
- ¥15 模糊pid与pid仿真结果几乎一样
- ¥15 java的GUI的运用
- ¥15 我想付费需要AKM公司DSP开发资料及相关开发。
- ¥15 怎么配置广告联盟瀑布流
- ¥15 Rstudio 保存代码闪退
- ¥20 win系统的PYQT程序生成的数据如何放入云服务器阿里云window版?