我必须编写一个方法来指示数字是否是数字的阶乘。基本上无论用户输入什么数字,该方法都应该能够判断该数字(x)是否是另一个数字的阶乘。我写了一个方法来找到(x)的阶乘,但我需要知道(x)是否是另一个数的阶乘。我现在一直用6作为例子,因为6是3的阶乘。任何建议?
public static int Fact(int x) {
int y=1;
while(x>1) {
y=y*x;
x=x-1;
}
return y;
}
答案 0 :(得分:2)
因子的形式为(1) * 2 * 3 * 4...
,所以我只是开始乘以这些数字,直到您达到或超过您的数字。
应该很简单。
答案 1 :(得分:1)
因为事实n = 1 * 2 * 3 * 4 * .. n,(n%i)== 0对于[1,n]中的i应始终为真
这应该可以正常工作
public class Factorial {
public static boolean isFactorial(int x){
int i =x;
boolean bol = false;
for ( i=2 ; i<x ; i++ ) {
if ((x%i)==0) bol = true ;
else bol = false ;break;
}
return bol;
}
}
您可以使用此课程进行测试:
public class TestFact {
public static void main(String[] args) {
System.out.println(Factorial.isFactorial(120));
}
}
答案 2 :(得分:0)
看看the mod运营商。如果数字mod某个其他数字= 0那么你找到了一个因子。 (假设这是你要找的东西)。例如:
public static int Fact(int x){
int i=2;
while(x % i (has no remainder) || (stop criteria))
i++;//increment the number
if(x!=i)//you found a factor
return i;
return -1;
}