最大公约数

来源:互联网 发布:钱学森被美国监禁 知乎 编辑:程序博客网 时间:2024/04/27 16:22
#include<iostream>using namespace std;//相减法void function1(){int choose=1;while(choose){int m,n,gcm;cout<<"请输入两组整数(空格隔开):"<<endl;cin>>m>>n;if(m==0||n==0){cout<<"输入不符合规定"<<endl<<endl;}else{for(int i=0;n!=m;i++){if(n<m){n=n+m;m=n-m;n=n-m;}n=n-m;}gcm=n;cout<<"相减法最大公约数为:"<<gcm<<endl<<endl;}cout<<"继续输入请按1,退出按0"<<endl;cin>>choose;cout<<endl;}}//辗转相除法void function3(){int choose=1;while(choose){int m,n,gcm;cout<<"请输入两组整数(空格隔开):"<<endl;cin>>m>>n;if(m==0||n==0){cout<<"输入不符合规定"<<endl<<endl;}else{while(n*m>0){if(n>m){n%=m;}else{m%=n;}}gcm=n+m;cout<<"辗转相除法最大公约数为:"<<gcm<<endl<<endl;}cout<<"继续输入请按1,退出按0"<<endl;cin>>choose;cout<<endl;}}//穷举法void function2(){int choose=1;while(choose){int i,gcm,m,n;cout<<"请输入两组整数(空格隔开):"<<endl;cin>>m>>n;if(m==0||n==0){cout<<"输入不符合规定"<<endl<<endl;cout<<"继续输入请按1,退出按0"<<endl;    cin>>choose;cout<<endl;}else{if(m>n){for(i=1;i<=n;i++){if(n%i==0&&m%i==0&&i>0){gcm=i;}}cout<<"穷举法最大公约数为:"<<gcm<<endl<<endl;cout<<"继续输入请按1,退出按0"<<endl;cin>>choose;cout<<endl;}else{for(i=1;i<=m;i++){if(n%i==0&&m%i==0&&i>0){gcm=i;}}cout<<"穷举法最大公约数为:"<<gcm<<endl<<endl;cout<<"继续输入请按1,退出按0"<<endl;cin>>choose;cout<<endl;}}}}//菜单void menu(){cout<<"*************************"<<endl;cout<<"******求最大公约数*******"<<endl;cout<<"*****  1.相减法     *****"<<endl;cout<<"*****  2.穷举法     *****"<<endl;cout<<"*****  3.辗转相除法 *****"<<endl;cout<<"*************************"<<endl;int item;cout<<"请选择:"<<endl;cin>>item;switch(item){case 1:function1();break;case 2:function2();break;case 3:function3();break;case 4:default:cout<<"请在1-4之间选择"<<endl<<endl;}}int main(){while(1){menu();}return 0;}
0 0
原创粉丝点击