南昌大学技术交流...吧 关注:89贴子:975
  • 4回复贴,共1

10月24日上课代码(函数调用)及提问讨论区

只看楼主收藏回复

内容:
1、 质数判定
2、 正整数各位数字分解
3、 整数的质因数分解
4、 最大公约数和最小公倍数


IP属地:广东1楼2015-10-24 10:40回复
    1.质数判定(函数功能:判断x是否为质数,如果是则函数返回1,否则返回0)
    int is_prime(int x)
    {
    if(x<2) return 0;
    int m=(int)floor(sqrt(x)+0.5);
    for(int i=2;i<=m;i++)
    if(x % i==0) return 0;
    return 1;
    }
    函数调用方法
    if(is_prime(a)==1) printf(”Yes\n”);
    else printf(”No\n”);


    IP属地:广东2楼2015-10-24 10:44
    回复
      2.正整数各位数分解(将正整数x的各位数字分解后存入数组y中,函数返回数字的个数。)
      int fjzs(int x,int* y)
      {
      int k;
      if(x==0) { y[0]=0; return 1; }
      for(k=0; x>0; k++,x=x/10)
      y[k]=x%10;
      return k;
      }
      函数调用方法
      int len=fjzs(n,a);
      for(int i=0;i<len;i++)
      printf("%d ",a[i]);


      IP属地:广东3楼2015-10-24 10:48
      回复
        3.整数的质因数分解(将正整数x分解成质数因数乘积的形式,将各质因数存入y数组中,函数返回质因数的个数。)
        int fjzys(int x,int* y)
        {
        int i=2,k=0;
        while(x>1)
        if(x%i==0){ y[k++]=i; x=x/i; }
        else i++;
        return k;
        }
        函数调用
        int tot=fjzys(x,ans);
        printf("%d=",x); //输出
        for(int i=0;i<tot-1;i++)
        printf("%d*",ans[i]);
        printf("%d\n",ans[tot-1]);


        IP属地:广东4楼2015-10-24 10:50
        回复
          4.最大公约数和最小公倍数(函数返回整数x和y 的最大公约数)
          int gcd(int x,int y)
          {
          return y==0? x: gcd(y,x%y);
          }
          函数调用方法
          int g=gcd(a,b);
          int lcm=a/g*b; //最小公倍数


          IP属地:广东5楼2015-10-24 10:53
          回复