c语言编程求阶乘1到10(初级编程竞赛真题)
c语言编程求阶乘1到10(初级编程竞赛真题)5 样例输出 Copy样例输入 Copy只有一行数据 该行只有一个整数n(1<=n<=100)输出只有一行内容 该行首先是n的阶乘值的所有数字之和P 接着若P为素数输出"T" 否则输出"F"(两者之间没有空格)
时间限制: 1 Sec 内存限制: 128 MB
题目描述
阶乘是数学中一种非常重要的运算 n的阶乘表示为n!=1*2*3*...*n.请你编写程序 根据一个给出n 求出其阶乘中所有数字之和P.并判断P是否为素数.
输入
只有一行数据 该行只有一个整数n(1<=n<=100)
输出
只有一行内容 该行首先是n的阶乘值的所有数字之和P 接着若P为素数输出"T" 否则输出"F"(两者之间没有空格)
样例输入 Copy
5
样例输出 Copy
3T
提示
5的阶乘为120,其数字之和为3,而3是素数,结果输出3T。
10的阶乘为3628800,其数字之和为27,而27不是素数,则输出27F
v
v
v
v
v
v
解答:
#include<bits/stdc .h> using namespace std; int factorial(int n) { int a[1000]; int carry; int digit=1; a[0]=1; int temp; int i j; for(i=2;i<=n; i) { for(j=1 carry=0;j<=digit; j) { temp=a[j-1]*i carry; a[j-1]=temp; carry=temp/10; } while(carry) { a[ digit-1]=carry % 10; carry/=10; } } long long sum=0; for(i=digit;i>=1;--i) { sum =a[i-1]; } return sum; } int main() { int n; cin>>n; int s=factorial(n); cout<<s; for(long long i=2;i*i<=s;i ) if(s%i==0) { cout<<"F"; return 0; } cout<<"T"; }