繁体   English   中英

Java - 输出所有因子的数组列表

[英]Java - array list to output all factors

我被要求创建一个方法,将所有因子作为数组列表返回。 任何帮助都会受到赞赏,因为我已经被困了一段时间了。

/**
 * Determines whether the number has factors.
 * 
 * @return   true iff the number has a factor
 */
public boolean hasMoreFactors()
{
    if (number >= 2) {
        return true;
    } else {
        return false;
    }
    // return (number >= 2);
}

/**
 * Is number divisible by a given other number?
 * 
 * @param otherNumber the number we test whether it divides the object's number
 * @return true iff the number is divisible by otherNumber
 */
public boolean isDivisible(int otherNumber)
{
    if (number % otherNumber == 0) {
        return true; 
    } else {
        return false;
    }
}

/**
 * Determine next factor.
 * pre-condition: call only if hasMoreFactors 
 * returns true
 * 
 * @return a factor of the object's number
 */
public int nextFactor()
{
    int triedFactor = 2;
    while (! isDivisible(triedFactor)) {
        triedFactor = triedFactor+1;

    }
    number = number / triedFactor;
    return triedFactor;
}

/**
 * Print all factors of the generator's number on standard output.
 */
public void printAllFactors()
{
    System.out.println("Factors of " + number);
    while (hasMoreFactors()) {
        System.out.println(nextFactor());
    }
    System.out.println("That's it.");
}

 /**
 * Main method: Read an integer and print all its factors.
 */
public static void main(String[] args)
{
    System.out.print("Please enter a number greater or equal 2: ");
    Scanner sc = new Scanner(System.in);
    int num = sc.nextInt();
    System.out.println();
    FactorGenerator gen = new FactorGenerator(num);
    gen.printAllFactors();
}   

}

而不是在这一行打印出来:

System.out.println(nextFactor());

创建一个ArrayList:

List<Integer> list = new ArrayList<Integer>();

并将它们存储在其中:

list.add(nextFactor());

阅读本文可能会有所帮助: 整数分解 它具有一系列算法

对于一个简单的Java实现,请查看本文

看起来你错过了一个数字具有相同因子多次的情况。 例如,4 = 2 * 2,但是在尝试了2之后,您增加并尝试了下一个3。 您需要继续尝试每个候选人,直到不再成为一个因素为止。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM