这里是关于数字因子的总和的问题
http://projecteuler.net/index.php?section=problems&id=254
这里也是Define sf(n) as the sum of the digits of f(n). So sf(342) = 3 + 2 = 5.
这是代码,它打印32作为数字的阶乘的总和,但它没有显示第二个结果
import java.util.*;
public class fact_of_digit1 {
public static int fact(int a){
if (a==0) return 1;
return a*fact(a-1);
}
public static int factorialofdigit(int a){
int sum=0;
int t=0;
while (a!=0){
t= a%10;
a/=10;
sum+=fact(t);
}
return sum;
}
public static void main(String[] args) {
Scanner scnr=new Scanner (System.in);
System.out.println("enter a:");
int a=scnr.nextInt();
System.out.println(factorialofdigit(a));
System.out.println(sfn(a));
}
public static int sfn(int a){
int sum1=0;
int t=factorialofdigit(a);
while (t!=0){
sum1+=t%10;
t/=10;
}
return sum1;
}
}
结果是:
enter a:
342
32
BUILD SUCCESSFUL (total time: 3 seconds)
答案 0 :(得分:1)
代码看起来很好,并在这里工作,所以它可能与IDE或你如何使用它有关。
您是否正在运行调试模式?你有没有设置断点?
如果您创建一个新项目并将代码复制到该项目会发生什么?
以下程序是否有效?
import java.util.*;
public class fact_of_digit1 {
public static void main(String[] args) {
Scanner scnr=new Scanner (System.in);
System.out.println("enter a:");
int a=scnr.nextInt();
System.out.println(5);
System.out.println(3);
}
}
用“int a = 342”替换扫描仪。
最后添加一个额外的println语句。
答案 1 :(得分:0)
main函数有两个不在循环中的print语句。你只会打印出这两个数字。
答案 2 :(得分:0)
看看这一行,我们需要计算sg(i)的总和
if (condition) {
// statement1
} else {
// statement2
}
答案 3 :(得分:0)
def f(n):
from math import factorial
lst_n = list(map(int, str(n).strip()))
s=0
for i in lst_n:
s += factorial(i)
return s
def sf(n):
return sum(list(map(int, str(f(n)))))
def g(i):
for n in range(1, 100000000):
if sf(n)==i:
break
return n
def sg(n):
s= 0
for i in range(1, n+1):
s += sum(list(map(int, str(g(i)))))
return s
N= int(input())
LST=[]
for i in range(N):
LST.append(list(map(int, input().strip().split())))
for i in range(N):
print(sg(LST[i][0]))