-4

我必须编写一个方法来指示一个数字是否是一个数字的阶乘。基本上无论用户输入什么数字,该方法都应该能够判断该数字 (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; 
}
4

3 回答 3

2

阶乘的形式为(1) * 2 * 3 * 4...,因此我将开始将这些数字相乘,直到您达到或超过您的数字。

这应该很简单。

于 2013-05-13T14:22:50.333 回答
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));
    }    
}
于 2013-05-13T14:46:48.763 回答
0

看看mod运算符。如果数字 mod some other number = 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; 
} 
于 2013-05-13T14:27:33.357 回答