long factorial source code in java