這些指令我有一個程序:質因子分解方案的Java
編寫一個程序,要求用戶一個整數(使用JOptionPane的),然後打印出它的質數分解。
例如,當用戶輸入150時,程序應打印「素數分解150:2 3 5 5」。
使用帶有方法nextFactor和hasMoreFactors(謂詞方法)的FactorGenerator類。實例字段應該是數字和因子。 hasMoreFactors方法應將因子初始化爲2,並使用while循環增加因子,直到因子平均分配爲數(在這種情況下,hasMoreFactors返回true值)或因子變得太大(在這種情況下,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());
}
}
我該如何着手做這項工作?
可能重複的:http://stackoverflow.com/questions/12570099/java-display-the-prime-factorization-of-a-number – Frakcool
到目前爲止什麼都不起作用? – kiruwka
你允許多大的數字?具體來說,主要因素有多大?您可以將所有數字因子分解爲10^6左右,並將結果存儲在相當短的時間內。較大的數字需要將它們單獨分解,並且可能需要專門的算法才能在合理的時間內解決。 – Nuclearman