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

时间:2022-03-10 18:27:05

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

组合数

#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\n",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\n",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\n",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)    

  递归的定义