确定一个数字是否是一个因子

时间:2013-05-13 14:17:30

标签: java factorial

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

3 个答案:

答案 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; 
}