求最大公约数最小公倍数

来源:互联网 发布:添加网络歌曲到空间 编辑:程序博客网 时间:2024/06/05 18:25
#include <iostream.h>#include <stdlib.h> #include <process.h>#include <stdio.h> void divisor1(){//辗转相除法int a,b,c;    //定义变量cout<<"请输入两个要计算的数字:"<<endl;cin>>a>>b;//输入要求最大公因数的两个数while(b!=0){    //一直让两个数相除取余直到余数为0c=a%b;a=b;b=c;}cout<<"最大公因数为:"<<a<<endl;     //输出最大公因数}void divisor2(){//相减法int a,b;cout<<"请输入两个要计算的数字:"<<endl;    //输入要求最大公因数的两个数cin>>a>>b;while(a!=b){//若a=b则两数的最大公因数就是其中一个,否则用大数减去小数知道两数相等输出if(a>b){a=a-b;}else{b=b-a;}}cout<<"最大公因数为:"<<a<<endl;                            //输出最大公因数}void divisor3(){//穷举法int a,b;int t;int i=1;cout<<"请输入要计算的两个数字:"<<endl;    //输入要求最大公因数的两个数cin>>a>>b;for (i=1; i<= a; i++)//从1开始一个一个的试,直到两个数都可以将其除尽       if ( a%i == 0 && b%i ==0 )    t=i; cout<<"最大公因数为:"<<t<<endl;                                     //输出最大公因数}void multiple(){//计算n个数的最小公倍数int i,j,k,m,n,a[100],g,h;cout<<"请输入要求最小公倍数的数字个数:"<<endl;                     //输入要计算的数字个数cin>>n;cout<<"请输入要计算的数字:"<<endl;while(n!=EOF) {k=1; for(i=0;i<n;i++)cin>>a[i];//利用for循环输入要求的数字for(j=0;j<n;j++)//计算最小公倍数 k=k*a[j]; for(m=1;m<=k;m++){for(h=0,g=0;g<n;g++){if(m%a[g]==0) h++; } if(h==n) break;} cout<<n<<"个数的最小公倍数为:"<<endl;    cout<<m<<endl; }}void main(){                                                            //主函数void divisor1();                                                    //方法一的声明void divisor2();//方法二的声明void divisor3();//方法三的声明void multiple();//求最小公倍数的声明int select;int choose=1;cout<<"计算最大公因数的方法(1-3),计算n个数的最小公倍数:"<<endl;//输出界面cout<<"1.辗转相除法       "<<endl;cout<<"2.相减法   "<<endl;cout<<"3.穷举法  "<<endl;cout<<"4.计算最小公倍数  "<<endl; while(choose){cout<<"请选择你需要的方式:"<<endl;cin>>select;switch(select){case 1:divisor1();break;case 2:divisor2();break;case 3:divisor3();break;case 4:multiple();break;default:cout<<"只有这几种方法了哦!请输入1,2,3,4"<<endl;}cout<<"返回上一级请输1,结束请输0。"<<endl;cin>>choose;if(choose==0) return;}system("pause");}

0 0