网站系统参数设置,深圳网站建设 设计创公司,企业年金规定,网页设计公司未来三年规划费用目录 最大公约数
两个数的最大公约数
多个数的最大公约数
最小公倍数
两个数的最小公倍数
多个数的最小公倍数
素数
编辑
位数分离
正写
编辑
反写
闰年 最大公约数
两个数的最大公约数
之前看见的是辗转相除法#xff0c;例如现在让算一个49#xff0c;21…目录 最大公约数
两个数的最大公约数
多个数的最大公约数
最小公倍数
两个数的最小公倍数
多个数的最小公倍数
素数
编辑
位数分离
正写
编辑
反写
闰年 最大公约数
两个数的最大公约数
之前看见的是辗转相除法例如现在让算一个4921的最大公约数
#includeiostream
using namespace std;
int main()
{int a49,b21;while(b!0){int tmpb;ba%b;atmp;}couta;return 0;}
模拟一下过程
刚开始a49,b21,循环判断b不等于0进入循环tmp21,ba%b49%217atmp21;
现在a21,b7,循环判断b不等于0进入循环tmp7,ba%b21%70,atmp7;
现在a7,b0,循环判断b不等于0循环结束
打印a7;
加上过程的打印
#includeiostream
using namespace std;
int main()
{int a49,b21;coutaa,bbendl;while(b!0){int tmpb;ba%b;atmp;coutaa,bbendl;}coutendla;return 0;}
运行结果如下图 多个数的最大公约数
可以先把前两个数的最大公约数求出来之后在依次和剩下的数进行辗转相除求出一组数的最大公约数
#includeiostream
using namespace std;
int gcd(int a,int b);
int gcd(int a,int b)
{while(b!0){int tmpb;ba%b;atmp;}return a;
}
int main()
{int arr[4]{5,75,80,2000};int numarr[0];for(int i1;i4;i){numgcd(num,arr[i]);}coutnum;return 0;}
最小公倍数
两个数的最小公倍数
最小公倍数数的求法一般是将两个数相乘然后除两个数的最大公约数下面是具体代码
#includeiostream
using namespace std;
int gcd(int a,int b)
{while(b!0){int tmpb;ba%b;atmp;}return a;
}int main(){int a21,b7;couta*b/gcd(a,b)endl;return 0;}
多个数的最小公倍数
也是同求多个数的最大公约数一样先求出前两个的最小公倍数然后依次于剩下的数求出整个数组的最小公倍数。代码如下
#includeiostream
using namespace std;
int gcd(int a,int b);
int gcd(int a,int b)
{while(b!0){int tmpb;ba%b;atmp;}return a;
}
int main()
{int arr[4]{50,100,10,20};int numarr[0];for(int i1;i4;i){numnum*arr[i]/gcd(num,arr[i]);}coutnum;return 0;}
素数
因数只有1和他本身的数 #includeiostreamusing namespace std;bool isprime(int n){for(int i2;i*in;i){if(n%i0)return false;}return true;}int main(){for(int i2;i100;i){if(isprime(i))printf(%d\t,i);}return 0;}
结果如下 位数分离
有时候会给一些数然后让分离每个位数的数字有时候是正写有时候是反写
正写
正写老师教过递归的写法但是有些不熟练我这里的方法是先统计这个数是几位数然后依次除。
#includeiostream
#includecmath
using namespace std;
int main()
{int a12345678;int numa;//用来统计位数int t0;while(num) {num/10;t;}while(t){t--;int ia/pow(10,t);aa-i*pow(10,t);couti ;}return 0;}
结果如下 反写
根据模的特点 #includeiostreamusing namespace std;int main(){int a12345678;while(a){couta%10 ;a/10; }return 0;}
结果如下 闰年
不是百年的时候每四年一闰
是百年的时候四百年一闰
#includeiostream
using namespace std;
bool leap(int year)
{if(year%4000||year%100!0year%40)return true;return false;}
int main()
{for(int i1;i1000;i){if(leap(i))printf(%d\t,i);}return 0;
}
结果