#include<stdio.h>
#include <iostream>
using namespace std;
#include<sys/timeb.h>
int method1(int m,int n)
{
int l;
if(m<n)
l=m;
else l=n;
while(l>0)
{
if(m%l==0)
{
if(n%l==0)
break;
}
l=l-1;
}
return l;
}
int method2(int m,int n)
{
int r;
r=m%n;
while(r!=0)
{
m=n;
n=r;
r=m%n;
}
return n;
}
int method3(int m,int n)
{
int i,f=1;
for(i=2;i<=m && i<=n;i++)
{
while(m%i==0 && n%i==0)
{
f*=i;
m/=i;
n/=i;
}
}
return f;
}
int main()
{
int m,n,max; //cout<<"输入测试组数:";
cout<<"请输入两个数m、n(空号相隔):";
while(cin>>m>>n )
{
timeb t1,t2;
int t;
ftime(&t1); // 求得当前时间
max=method1(m,n);
ftime(&t2); // 求得当前时间
t=(t2.time-t1.time)*1000+(t2.millitm-t1.millitm); // 计算时间差
cout<<m<<" "<<n<<"的最大公约数是:"<<max<<", 该算法用时"<<t<<"毫秒"<<endl;
ftime(&t1);
max=method2(m,n);
ftime(&t2);
t=(t2.time-t1.time)*1000+(t2.millitm-t1.millitm);
cout<<m<<" "<<n<<"的最大公约数是:"<<max<<", 该算法用时"<<t<<"毫秒"<<endl;
ftime(&t1);
max=method3(m,n);
ftime(&t2);
t=(t2.time-t1.time)*1000+(t2.millitm-t1.millitm);
cout<<m<<" "<<n<<"的最大公约数是:"<<max<<", 该算法用时"<<t<<"毫秒"<<endl;
}
return 1;
}
设计出3个版本的求最大公约数的算法
需积分: 50 150 浏览量
2014-11-12
10:43:20
上传
评论 1
收藏 891KB RAR 举报
CMgMg
- 粉丝: 0
- 资源: 1
最新资源
- 重启进行BIOS快捷方式,不需要开机按BIOS键
- 威纶通触摸屏编程软件Easy builder pro V6.09.01.556安装包(2024.04).txt
- WindowsAdminCenter
- 老飞飞搭建基础通用数据库V19数据库.rar
- jquery.js
- 机械设计多工位ACF贴胶带&预压设备sw18可编辑非常好的设计图纸100%好用.zip
- 基于Pytorch复现Point-Transformer,用于ShapeNet数据集点云分割
- 【医学影像分析】2D超声图像的分割检测(Ultrasound Nerve Segmentation - Kaggle数据集)
- 嘎嘎香的五款神仙谷歌插件
- .arch书源导入教程.mp4
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈