簡體   English   中英

素因分解程序Java

[英]Prime Factorization Program Java

這些是我對該程序的說明:

編寫一個程序,要求用戶輸入整數(使用JOptionPane),然后打印出其素因數分解。

例如,當用戶輸入150時,程序應打印“ Prime factorization of 150:2 3 5 5”。

將類FactorGenerator與方法nextFactor和hasMoreFactors(謂詞方法)一起使用。 實例字段應為數字和因子。 hasMoreFactors方法應該將factor初始化為2,並使用while循環來遞增factor直到factor均勻地划分為數字(在這種情況下hasMoreFactors返回的值為true)或factor太大(在這種情況下hasMoreFactors返回的值為false)。

在FactorGeneratorTest中,應允許用戶輸入他/她希望的任意多個整數。 輸入應繼續,直到按下取消按鈕。 建議您輸入的整數是30、100、2310和27225。

到目前為止,這是我的FactorGenerator類:

package primeFactorization;

public class FactorGenerator {

public FactorGenerator(double input) {
    number = input;
}

public String hasMoreFactors() {
    factor = 2;
    boolean loop = true;
    primeFactors = "Prime Factors are: ";
    while(loop) {
        if(number % factor == 0) {
            number = number / factor;
            primeFactors = (number + ", ");
            }
            if(factor > number) {
                loop = false;
            }
            if(number % factor != 0) {
                factor++;
            }
            if(number < 2) {
                loop = false;
            }
        }
        return primeFactors;
    }

    private String primeFactors;
    private boolean hasFactor;
    private double number;
    private double factor;
}

這是我的測試課:

package primeFactorization;

import javax.swing.JOptionPane;

public class FactorGeneratorTest 
    {
    public static void main(String[]args) {
        String input = JOptionPane.showInputDialog("Enter a number. ");
        Double num = Double.parseDouble(input);

        FactorGenerator factors = new FactorGenerator(num);

    System.out.println(factors.hasMoreFactors());
}
}

我該如何進行這項工作?

您要在hasMoreFactors()方法中為字符串變量primeFactors重新分配變量號的中間值。 primeFactors應該與質數值(即可變因數的值)串聯。 hasMoreFactors()應該如下所示:

public String hasMoreFactors() {
        factor = 2;
        boolean loop = true;
        primeFactors = "Prime Factors are: ";
        while (loop) {
            if (number % factor == 0) {
                number = number / factor;
                primeFactors += (factor + ", ");
            }
            if (factor > number) {
                loop = false;
            }
            if (number % factor != 0) {
                factor++;
            }
            if (number < 2) {
                loop = false;
            }
        }
        return primeFactors;
    }

示例:輸入為35,您從因數2開始,但是35 % 2 = 1因此您永遠不會使用factor++
將其直接放在循環的末尾,並詢問是否在該回合中找不到任何因素。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM