java 关于编写一个显示一个整数的所有最小因子

问题描述

[color=blue]提示用户输入一个正整数,然后以降序显示它的所有最小因子,例如:120,那么显示的最小因子为5,3,2,2,2。使用StackOfIntegers类来存储这些素数(例如:2,2,2,3,5)获取这些按倒序显示这些因子。 我不会用StackOfIntegers来显示因子啊

解决方案

package com.zyn.iteye;import java.util.ArrayList;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的因子,填入listlist.add(i);//如果商为素数,则添加商到list,程序结束if(isSuShu(last)){list.add(last);return;}//如果商不为素数,递归商调用本方法,分解商getSub(sum/i);//如果sum可以被素数因子整除,直接分解商,后续的因子不必再循环break;}}}//如果可以被2整除,则+1,否则+1后再除以2public 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 stubStackOfIntegers s = new StackOfIntegers();s.getSub(120);System.out.println(s.list);}}
解决方案二:
StackOfIntegers?是不是可以更简单点,直接存放在arrayList中,完了之后排序一下(用这个方法来排序:Collections.sort(List<T> list, Comparator<? super T> c)),遍历打印,是否可以满足你的要求?
解决方案三:
public static void main(String[] args) {StackOfIntegers stackOfIntegers = GetFactors(120);System.out.println(stackOfIntegers.getSize());}static StackOfIntegers GetFactors(int n){ List<Integer> factors = new ArrayList<Integer>(); int x = 2; while (x <= n) { if (n % x == 0) { factors.add(x); n = n / x; } else { x++; if (x * x >= n) { factors.add(n); break; } } } Collections.sort(factors); Collections.reverse(factors); StackOfIntegers stackOfIntegers = new StackOfIntegers(); for(int i :factors){ stackOfIntegers.push(i);} return stackOfIntegers;}

时间: 2024-09-19 23:56:56

java 关于编写一个显示一个整数的所有最小因子的相关文章

java编程,在屏幕上显示一个带标题的窗口,并添加一个按钮

问题描述 java编程,在屏幕上显示一个带标题的窗口,并添加一个按钮 编写程序,在屏幕上显示一个带标题的窗口,并添加一个按钮,当用户单击按钮时,弹出对话框,显示用户单击了按钮. 解决方案 找点Java 的 Swing学习资料,这种界面估计用netbean或idea都可以自动生成. 解决方案二: import java.awt.Frame; import java.awt.Graphics; import java.awt.GridLayout; import java.awt.event.Act

java mysql-求一个java+mysql编写的银行账户管理系统

问题描述 求一个java+mysql编写的银行账户管理系统 用java链接mysql 编写的一个银行账户管理系统,里面有两个模块:管理员和用户模块,管理员可以给用户开户查询所有用户信息,用户可以存取款,查询利息,显示用户信息 解决方案 有c#连接sqlserver的,你要吗

问一个java gui问题,在一个窗体中,两个conboBox,改变上一个,怎么让下面一个显示为空。

问题描述 问一个java gui问题,在一个窗体中,两个conboBox,改变上一个,怎么让下面一个显示为空. 问一个java gui问题,在一个窗体中,两个conboBox,改变上一个,怎么让下面一个显示为空.是看起来为空 解决方案 你需要把它们放在同一个panel里把 然后就可以得到你想要的结果

java用编写一个4*4矩阵程序,并要求行列能够互换

问题描述 java用编写一个4*4矩阵程序,并要求行列能够互换 各位大神帮帮忙,请编写一个程序,要求能够对一个4*4的矩阵进行行列互换,非常感谢! 解决方案 public static void main(String[] args) { int[][] a = { {1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}, {13, 14, 15, 16} }; int[][] b = new int[4][4]; int i, j; System.out.pri

java-求教各位Java程序语言大神,用Java语言编写一个能在Eclipse开发工具运行的音乐播放器

问题描述 求教各位Java程序语言大神,用Java语言编写一个能在Eclipse开发工具运行的音乐播放器 这个音乐播放器要有基本的功能,例如(这几个播放方式最好有图标)开始播放.停止播放.两三个播放模式:音乐播放的进度条:播放列表:有歌手的背景图. 最后一个要求:编程能在Eclipse开发工具了运行. 本人新手,对Java语言很多不懂,所以如果可以的话,可以在某些关键的代码后面注释,谢谢! 也可以发到我邮箱:sxl2860@163.com,如果是发到我邮箱的,请大神们说一声! 如果做得好的话,及

eclipse-我有一个用java语言编写的拼图游戏的文件压缩包,怎样有Eclipse打开并运行?

问题描述 我有一个用java语言编写的拼图游戏的文件压缩包,怎样有Eclipse打开并运行? 我有一个用java语言编写的拼图游戏的文件压缩包,怎样有Eclipse打开并运行? 解决方案 1.将压缩包解压 2.打开Eclipse, 3.在左侧工作区右键Import-General-Existing Projects into Workspaces 4.next,finish

图片-java编写如何判断一个正整数是否是fibonacci数列中的数?

问题描述 java编写如何判断一个正整数是否是fibonacci数列中的数? 解决方案 先产生一个1~10000内的费波拉契数列表,然后用如下算法http://rosettacode.org/wiki/Zeckendorf_number_representation 解决方案二: http://bbs.csdn.net/topics/120067216 解决方案三: 先计算费波拉契系列直到值等于给定的数据或者超出给定的数值,如果计算到某个n的值等于给定的数,说明是费波拉契数,否则超过给定的值说明

java用什么组件可以显示一个网页形式文件

问题描述 java用什么组件可以显示一个网页形式文件,用来做帮助的.新手 解决方案 解决方案二:JEditPane呵呵解决方案三:引用1楼amdgaming的回复: JEditPane呵呵 顶解决方案四:具体怎么做呢解决方案五:JEditorPane看API创建一个对象之后showPage()就可以了当然要想自定义更多功能看看API或者百度下解决方案六:学习-解决方案七:importjava.awt.BorderLayout;importjava.awt.event.ActionEvent;im

ASP编写完整的一个IP所在地搜索类

ASP编写完整的一个IP所在地搜索类的修正文稿 修正了查询方法,查询的方法和追捕的一致:只是追捕会自动更正IP. 还有个函数的书写错误,也已经修正: 包括增加了一个IP地址正确性的验证函数.(只是从格式上判断) <% Server.ScriptTimeout = &HE10 '&H3C Response.Buffer = ("S.F." = "S.F.") Dim IpSearch '建立对象 Set IpSearch = New clsIpS