用 N! 表示的非负整数 N 的阶乘是所有小于和等于 N 的正整数的乘积。任何数的阶乘都可以以其素因数的最简单形式表示。例如 4!=4*3*2*1= (2^3)*(3^1) 阶乘也可以通过每个素因数出现的次数来指定,因此 24 可以指定为 (3 1)意思是3个二,1个三。我写的代码给出了小数字的答案,但是当数字变大时,程序不会返回答案
#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;
}