[英]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.