文章作者:姜南(Slyar) 文章来源:Slyar Home (www.slyar.com) 转载请注明,谢谢合作。
背景 Background
Zhang Gangrui 年纪大了,记性不好,保险箱的密码记不住了,他只记得密码是一个数的阶乘各个位的数相加的和,最后还有个T或F,代表这个数是否为素数,正好,你到他家去了,他请你帮他这个忙,并答应事成之后给你100000000 MOD 10 RMB。
描述 Description
输入一个整数n(1000>=n>=0)
输出n的阶乘各个位的数相加的和y,最后再输出T或F,
代表y是否为素数。
输入格式 Input Format
输入一个整数n(1000>=n>=0
输出格式 Output Format
输出n的阶乘各个位的数相加的和y,最后再输出对y是否为素数的判断,
是为T否为F。
Tip:首先是高精度阶乘,之后的素数判断只看n就可以了,当n=2或者n=5时,结果为素数,其他的n结果一定是素数,因为3!以后各位数加起来一定是3的倍数。
#include <stdio.h>
int main(){
int i,j,n,jinwei,weishu=1,temp,x[10000],sum=0;
scanf(“%d”,&n);
x[0]=1;
for(i=2;i<=n;i++){
jinwei=0;
for(j=1;j<=weishu;j++){
temp=x[j-1]*i+jinwei;
x[j-1]=temp%10;
jinwei=temp/10;
}
while(jinwei){
weishu++;
x[weishu-1]=jinwei%10;
jinwei=jinwei/10;
}
}
for(j=weishu-1;j>=0;j–) sum+=x[j];
if ((n==2)||(n==5)) printf(“%dT”,sum);
else printf(“%dF”,sum);
return 0;
}