利用指针变量作为函数参数,从主函数里调用函数fl判断任意输入的某个正整数是否为素数,并返回其阶乘值
你题目的解答代码如下:(如有帮助,望采纳!谢谢! 点击我这个回答右上方的【采纳】按钮)
#include <stdio.h>
int ft(int n)
{
if(n<=1) return 1;
return n*ft(n-1);
}
int fl(int *p)
{
int i;
if(*p<=1) return 0;
for(i=2;i*i<=*p;i++)
if(*p%i==0) return 0;
return ft(*p);
}
void main()
{
int x,t;
printf("请输入一个数: ");
scanf("%d",&x);
t = fl(&x);
if (t!=0)
{
printf("%d 是素数,阶乘是 %d", x,t);
}
else
{
printf("%d 是不素数", x);
}
}
与所有小于它的数求余,如果为0,则不是素数,否则为素数
double jc(int n)
{
if(n==1)
return 1;
return n*jc(n-1);
}
int isprime(int n)
{
for(int i=2;i*i<=n;i++)
if(n%i==0)
return 0;
return 1;
}
double fl(int *p)
{
if(isprime(*p))
return jc(*p);
return 0;
}
int main()
{
int n;
cin>>n;
double j = fl(&n);
cout<<"结果为:"<<j;
return 0;
}