常用函数大杂烩

  1 #include<iostream>
  2 #include<cmath>
  3 #include<cstring>
  4 using namespace std;
  5 
  6 //最大公约数 (辗转相除循环法) 
  7 int gcd(int a, int b)
  8 {
  9     while(b)
 10     {
 11         int r=a%b;
 12         a=b;
 13         b=r;
 14     }
 15     return a;
 16 }
 17 //最大公约数 (使用到递归) 
 18 int gcd2(int a, int b)
 19 {
 20     if(b==0)
 21         return a;
 22     else
 23         return gcd2(b, a%b);
 24 }
 25 //最小公倍数
 26 int lcm(int a, int b)
 27 {
 28     return a*b/gcd(a, b);
 29 } 
 30 //判断整数n是不是素数 
 31 bool is_prime(int n)
 32 {
 33     bool f=true;
 34     if(n<2)
 35         f=false;
 36     for(int i=2; i*i<=n; i++)
 37         if(n%i==0)
 38         {
 39             f=false;
 40             break;
 41         } 
 42     return f;
 43 }
 44 //判断y年份是否是闰年 
 45 bool is_leap_year(int y)
 46 {
 47     return ((y%4==0 && y%100!=0) || y%400==0);
 48 }
 49 ////判断a[]是否为回文数
 50 bool is_hws(char a[])
 51 {
 52     bool f=true;
 53     int len=strlen(a);
 54     for(int i=0, j=len-1; i<len/2; i++,j--)
 55     {
 56         if(a[i]!=a[j])
 57         {
 58             f=false;
 59             break;
 60         }
 61     }
 62     return f;
 63 } 
 64 //返回斐波那契数列第n项的值 
 65 long long fib(int n)
 66 {
 67     long long f[50];
 68     f[1]=f[2]=1;
 69     for(int i=3; i<=n; i++)f[i]=f[i-1]+f[i-2];
 70     return f[n];
 71 } 
 72 //交换a, b两数的值
 73 void jh(int &a, int &b)
 74 {
 75     int t;
 76     t=a;
 77     a=b;
 78     b=t;
 79 } 
 80 int main()
 81 {
 82     cout<<gcd(24,56)<<endl;
 83     
 84     cout<<gcd2(24,46)<<endl;
 85     
 86     cout<<lcm(5,7)<<endl;
 87         
 88     cout<<is_prime(12)<<" "<<is_prime(13)<<endl;
 89 //    
 90     cout<<is_leap_year(1800)<<endl;
 91 //
 92     char c[]="abddba";
 93     cout<<is_hws(c);
 94 //    
 95     cout<<fib(5)<<" "<<fib(15)<<" "<<fib(47)<<endl;
 96 //    
 97     int a=233, b=666;
 98 //    写一个函数实现交换a,b值输出 
 99     jh(a, b);
100     cout<<a<<" "<<b;
101     return 0;
102 }

 

posted @ 2022-03-23 17:18  TFLSNOI  阅读(55)  评论(0编辑  收藏  举报