階乗と整除
2272 ワード
整数nに対して、nの階乗はnと表される。定義は以下のとおりです。=1 n!=n*(n-1)nとmを与えて、nを聞きますmの倍数ですか?nとmは全部32ビットの整数範囲内であり、mは0ではない。は、1と0を返します。
public class Test {
public static void main(String[] args) {
Test testMain = new Test();
testMain.run();
}
public void run() {
AdjustNum adjustNum = new AdjustNum();
adjustNum.adjustRun();
if (adjustNum.getDivNum() == -1 || adjustNum.getFacNum() == -1) {
System.out.println(" ");
return;
}
DealNum dealNum = new DealNum(adjustNum.getFacNum(),
adjustNum.getDivNum());
dealNum.dealRun();
}
}
/**
*
*/
class AdjustNum {
String facNum;
String divNum;
public void adjustRun() {
facNum = getInputFacNum();
divNum = getInputDivNum();
}
public int getFacNum() {
// 32
return (strToData(facNum) <= 32 ? strToData(facNum) : -1);
}
public int getDivNum() {
if (strToData(divNum) == 0) {
System.out.println(" 0");
return -1;
} else {
// 32
return (strToData(divNum) <= 32 ? strToData(divNum) : -1);
}
}
//
public String getInputFacNum() {
return JOptionPane.showInputDialog(null, " ");
}
//
public String getInputDivNum() {
return JOptionPane.showInputDialog(null, " ");
}
//
public int strToData(String strData) {
if (isNumeric(strData)) {
return Integer.parseInt(strData);
} else {
return -1;
}
}
//
public boolean isNumeric(String strData) {
Pattern pattern = Pattern.compile("[0-9]*");
return pattern.matcher(strData).matches();
}
}
/**
*
*/
class DealNum {
private int firstNum, secondNum;
// ,
public DealNum(int firstNum, int secondNum) {
this.firstNum = firstNum;
this.secondNum = secondNum;
}
public int dealRun() {
return adjustData(getEndData(firstNum), secondNum);
}
//
public int getEndData(int myNum) {
int endData = 1;
// 0!=1
if (myNum == 0) {
return 1;
}
while (myNum != 0) {
endData *= myNum;
myNum--;
}
System.out.println(endData);
return endData;
}
//
public int adjustData(int one, int two) {
int isTrue = 0;
if (one % two == 0) {
isTrue = 1;
} else {
isTrue = 0;
}
return 1;
}
}