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 }