-
java 关于编写一个显示一个整数的所有最小因子5
[color=blue]提示用户输入一个正整数,然后以降序显示它的所有最小因子,例如:120,那么显示的最小因子为5,3,2,2,2。使用StackOfIntegers类来存储这些素数(例如:2,2,2,3,5)获取这些按倒序显示这些因子。
我不会用StackOfIntegers来显示因子啊2013年8月14日 19:32
3个答案 按时间排序 按投票排序
-
采纳的答案
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的因子,填入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); } }
2013年8月14日 20:16
-
StackOfIntegers?是不是可以更简单点,直接存放在arrayList中,完了之后排序一下(用这个方法来排序:Collections.sort(List<T> list, Comparator<? super T> c)),遍历打印,是否可以满足你的要求?
2013年8月15日 11:49
-
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;
}2013年8月14日 21:07
相关推荐
java求一个整数的因子.rar
java求一个整数的因子.7z
利用Java 编写程序读入一个整数,显示该数的所有素数因子,例如,输入整数位120,输出为2、2、2、3、5。
java求一个整数的因子源码
编写一个Java程序从键盘获分别取读取两个整数,并计算这两个整数之和
编写求两个整数的最小公倍数的函数,函数原型为:int maxb(int x,inty);并编写主函数,调用该函数求键盘输入的两个整数的最小公倍数,并在屏幕输出。
java代码-使用java输入参数为一个整数,输出为该整数各个位上的最大数字的源代码 ——学习参考资料:仅用于个人学习使用!
编写一个java应用程序。用户从键盘输入一个1-9999之间的数,程序将判断这个数是几位数,并判断这个数是否回文数。回文数是指将数含有的数字逆序排列后得到的数和原数相同,例如12121,4224,6778776等都是回文数。 1)...
16.编写一个类A,该类创建的对象可以调用方法f 输出英文字母表,然后再编写一个该类的子类B,要求 子类B 必须继承A 类的方法f(不允许重写),子类创建的对象不仅可以调用方法f 输出英文字母表,而 且调用子类新增的...
利用Java编写程序,提示用户输入一个十进制整数,然后显示对应的二进制值。在这个程序中不要使用Integer.toBinaryString(int)
1、 编写一个计算机程序用来计算一个文件的16位效验和。最快速的方法是用一个32位的整数来存放这个和。记住要处理进位(例如,超过16位的那些位),把它们加到效验和中。 要求:1)以命令行形式运行:check_sum in...
编写一个java应用程序。用户从键盘输入一个1-9999之间的数,程序将判断这个数是几位数,并判断这个数是否回文数。回文数是指将数含有的数字逆序排列后得到的数和原数相同,例如12121,4224,6778776等都是回文数。 1)...
def lcm(a,b): for i in range(min(a,b),0,-1): if a%i==0 and b%i==0: ...c=int(input("请输入第一个数:")) d=int(input("请输入第二个数:")) print("这两个数的最小公倍数:") print(lcm(c,d))
java求一个整数的因子.zip
将第一个因子为2的分解个数,加上第一个因子为3的分解个数,...,直至加到第一个因子为12的分解个数. 而第一个因子为2的分解个数又是多少呢?是6(因为12/2=6)的分解个数,递归求解! 可用“递归”和“备忘录方法”两种...
将第一个因子为2的分解个数,加上第一个因子为3的分解个数,...,直至加到第一个因子为12的分解个数. 而第一个因子为2的分解个数又是多少呢?是6(因为12/2=6)的分解个数,递归求解! 可用“递归”和“备忘录方法”两种...
JAVA中判断一个整数是否为质数, 有空可以看看.
Python编写一个猜数程序:随机生成一个整数,再从键盘输入一个整数。若两个整数相等表示猜中,否则继续输入整数进行猜数,直到猜中为止。
用java编写一个简单的猜数字游戏,实现信息响应机制