利用指针变量作为函数参数,从主函数里调用函数fl判断任意输入的某个正整数是否为素数,并返回其阶乘值

利用指针变量作为函数参数,从主函数里调用函数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);
    }
}

img

与所有小于它的数求余,如果为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;
}