算法入门笔记------------Day3

主要是复习前面的基本内容,以及函数的概念

组合数

#include<stdio.h>
int f(int n)
{
        int m=1;
        for(int i=1;i<=n;i++)
            m*=i;
        return m;
}
int main(void)
{
        int n,m;
        scanf("%d%d",&n,&m);
        printf("%d
",f(n)/(f(m)*f(n-m)));
        return 0;
}

孪生素数

#include<stdio.h>
int isprime(int n)
{
        int i;
        for(i=2;i*i<=n;i++)
            if(n%i==0)  return 0;
        return 1;
}
int main(void)
{
        int m;
        scanf("%d",&m);
        for(int i=m-2;i>=3;i--)
        {
                if(isprime(i)&&isprime(i+2))
                {
                    printf("%d %d
",i,i+2);
                    break;
                }
        }
        return 0;
}


#include<stdio.h>
#include<math.h>
#include<assert.h>
int isprime(int x)
{
        int i,m;
        assert(x>=0);
        m=floor(sqrt(x)+0.5);
        for(i=2;i<=m;i++)
            if(x%i==0)   return 0;
        return 1;
}
int main(void)
{
        int i,m;
        scanf("%d",&m);
        for(i=m-2;i>=3;i--)
        {
                if(isprime(i)&&isprime(i+2))
                    {
                        printf("%d %d
",i,i+2);
                        break;
                    }
        }
        return 0;
}

 交换函数 指针的使用,多个值返回

int swap(int *a,int *b)
{
    t=*a;*a=*b;*b=t;
}

  注意gdb的使用

  gcc test.c -g

  gdb a.out (gdb a.exe)    

  递归的定义

  

原文地址:https://www.cnblogs.com/SqLver/p/4934086.html