查找数字等于其每个数字的阶乘之和,例如:145

时间:2015-11-09 15:03:40

标签: java

查找数字等于每个数字的阶乘之和,例如:145 从1到200 我试过这个:

public static void main(String[] args) {
    int i = 0, x = 0, temp, temp1, digit = 0, factorial = 1, sum = 0;
    System.out.println("Special Numbers from 1 to 10,000 -:");
    for (i = 1; i <= 200; i++) {
        temp = i;
        temp1 = i;
        while (temp > 0) {
            digit = temp % 10;
            factorial = 1;
            for (x = 1; x <= digit; x++) {
                factorial *= x;//factorial of digit
            }
            sum += factorial;//sum of factorial of a all the digits of the number
            temp = temp / 10;
        }
        if (sum == temp1) {
            System.out.println(temp1);
        }
    }
}

所以,如果我把i = 145它起作用,但是其他人得到了错误的输出。

3 个答案:

答案 0 :(得分:1)

你忘记了总和0,所以你只能得到你尝试的第一个数字的正确结果。 sum = 0;行应该在while(temp>0){之前。

答案 1 :(得分:1)

您的sum变量在for block之外声明。

每次计算一个阶乘和时,都会加到前一个总和中,因此1! + 4! + 5!在这种情况下永远不会是145

尝试在循环内将其初始化为0

答案 2 :(得分:1)

您需要在for循环内初始化for(i=1;i<=200;i++){ sum = 0; //<--include this temp = i; temp1 = i; while(temp>0){ digit = temp%10; factorial =1; for(x = 1;x<=digit;x++){ factorial*=x;//factorial of digit } sum+=factorial; //sum of factorial temp = temp/10; } if(sum == temp1){ System.out.println(temp1); } }

'agg_seg.exe' (Win32): Loaded 'D:\Sphinx\SphinxTrain\bin\Debug\agg_seg.exe'. Symbols loaded.
'agg_seg.exe' (Win32): Loaded 'C:\Windows\SysWOW64\ntdll.dll'. Cannot find or open the PDB file.
'agg_seg.exe' (Win32): Loaded 'C:\Windows\SysWOW64\kernel32.dll'. Cannot find or open the PDB file.
'agg_seg.exe' (Win32): Loaded 'C:\Windows\SysWOW64\KernelBase.dll'. Cannot find or open the PDB file.
'agg_seg.exe' (Win32): Loaded 'D:\Sphinx\SphinxTrain\bin\Debug\sphinxbase.dll'. Symbols loaded.
'agg_seg.exe' (Win32): Loaded 'C:\Windows\SysWOW64\winmm.dll'. Cannot find or open the PDB file.
'agg_seg.exe' (Win32): Loaded 'C:\Windows\SysWOW64\msvcrt.dll'. Cannot find or open the PDB file.
'agg_seg.exe' (Win32): Loaded 'C:\Windows\SysWOW64\user32.dll'. Cannot find or open the PDB file.
'agg_seg.exe' (Win32): Loaded 'C:\Windows\SysWOW64\gdi32.dll'. Cannot find or open the PDB file.
'agg_seg.exe' (Win32): Loaded 'C:\Windows\SysWOW64\lpk.dll'. Cannot find or open the PDB file.
'agg_seg.exe' (Win32): Loaded 'C:\Windows\SysWOW64\usp10.dll'. Cannot find or open the PDB file.
'agg_seg.exe' (Win32): Loaded 'C:\Windows\SysWOW64\advapi32.dll'. Cannot find or open the PDB file.
'agg_seg.exe' (Win32): Loaded 'C:\Windows\SysWOW64\sechost.dll'. Cannot find or open the PDB file.
'agg_seg.exe' (Win32): Loaded 'C:\Windows\SysWOW64\rpcrt4.dll'. Cannot find or open the PDB file.
'agg_seg.exe' (Win32): Loaded 'C:\Windows\SysWOW64\sspicli.dll'. Cannot find or open the PDB file.
'agg_seg.exe' (Win32): Loaded 'C:\Windows\SysWOW64\cryptbase.dll'. Cannot find or open the PDB file.
'agg_seg.exe' (Win32): Loaded 'C:\Windows\SysWOW64\msvcr110d.dll'. Symbols loaded.
'agg_seg.exe' (Win32): Loaded 'C:\Windows\SysWOW64\imm32.dll'. Cannot find or open the PDB file.
'agg_seg.exe' (Win32): Loaded 'C:\Windows\SysWOW64\msctf.dll'. Cannot find or open the PDB file.
'agg_seg.exe' (Win32): Loaded 'C:\Windows\SysWOW64\nvinit.dll'. Cannot find or open the PDB file.
The program '[6444] agg_seg.exe' has exited with code -1 (0xffffffff).
相关问题