N! で表される負でない整数 N の階乗は、N 以下のすべての正の整数の積です。任意の数の階乗は、その素因数の最も単純な形式で表すことができます。例: 4!=4*3*2*1= (2^3)*(3^1) 階乗は、各素因数が含まれる回数で指定することもできます。したがって、24 は (3 1) のように指定できます。 3 2、1 3 を意味します。私が書いたコードは小さな数字に対して答えを出しますが、数字が大きくなるとプログラムは答えを返しません
#include<stdio.h>
long fact(long n)
{
if(n==0)
return 1;
else
return(n*fact(n-1));
}
int main()
{
long a[10]={0};
long n,l=0,count=0,i,j,flag;
if(!scanf("%ld",&n))
{
printf("Invalid input");
goto l1;
}
if(n<0)
{
printf("Invalid input");
goto l1;
}
n=fact(n);
while(n%2==0)
{
count++;
n=n/2;
}
a[l]=count;
l++;
for(i=2;i<=n;i++)
{
count=0;
j=2;
flag=0;
while(j<i)
{
if(i%j==0)
{
flag=0;
break;
}
else
flag=1;
j++;
}
if(flag==1)
{
count=0;
while(n%i==0)
{
count++;
n=n/i;
}
a[l]=count;
l++;
}
}
for(i=0;i<l;i++)
printf("%ld ",a[i]);
l1:return 0;
}