• Source
    1. /// Author : Shohanur Rahaman
    2. /// HackerEarth : Number Mania
    3.  
    4. #include<stdio.h>
    5. #include<string.h>
    6. #include<math.h>
    7. #include<stdlib.h>
    8. #define N 100 // prime
    9. #define F 500
    10. #define B 10 // base
    11.  
    12. char P[N];
    13. int fact[F];
    14.  
    15. void sieve( )
    16. {
    17. int i,j,root;
    18. for(i=0;i<N;i++)
    19. P[i]=1;
    20.  
    21. P[0]=P[1]=0; // zero one are not prime
    22. root=sqrt(N);
    23. for(i=2;i<=root;i++)
    24. if(P[i]==1){
    25. for(j=2;i*j<=N;j++)
    26. P[i*j]=0;
    27. }
    28. }
    29.  
    30. int factorial(int n)
    31. {
    32.  
    33. int i,j,size=0,carry=0,tmp=0,a;
    34.  
    35. memset(fact,0,N);
    36. fact[0]=1;
    37. size=1;
    38. carry=0;
    39. for(j=1;j<=n;j++){
    40. for(i=0;i<size;i++){
    41. tmp=fact[i]*j+carry;
    42. fact[i]=tmp%B;
    43. carry=tmp/B;
    44. }
    45. while(carry>0){
    46. fact[size++]=carry%B;
    47. carry=carry/B;
    48. }
    49. }
    50.  
    51. return size;
    52. }
    53.  
    54. int main()
    55. {
    56. sieve();
    57. int i,n,a,size=1;
    58.  
    59. while(scanf("%d",&n)==1){
    60.  
    61. for(i=2;i<=n;i++){
    62. if(P[i]==1){
    63. // printf("%d ",i);
    64. size = factorial(i);
    65.  
    66. for(a=size-1;a>=0;a--){
    67. printf("%d",fact[a]);
    68. }
    69. printf("\n");
    70. }
    71.  
    72. }
    73.  
    74. } // end while
    75.  
    76.  
    77. return 0;
    78. }
    79.