//分解质因数
#include<stdio.h>
#include<time.h>
#include<math.h>
int evaluate(int m,int n)
{
int i=2,sum=1;
int count=0;
while(m!=1)//当质因数全部除了原数m之后,结果为1
{
//公约数不会比最小的数大,所以不用考虑比大小
while(m%i==0)//判断是否是因子
{
m=m/i;//i是m的因子的情况下,n除掉i,得到第一个因子,并排除掉本因子对之后的影响
if(n%i==0)//i是否同时是n的因子
{
n=n/i;//i也是n的因子的话,n也除掉i,排除本因子接下来的影响
sum*=i;//公约数的中间数
}
count++;
}
i++;
}
printf("执行次数为: %d\n",count);
return sum;
}
int main()
{
int a,b,ans;
printf("请数入两个整数");
scanf("%d %d",&a,&b);
clock_t start,end;
start=clock();
ans=evaluate(a,b);
end=clock();
printf("用时:%f\n",(double)(end-start));
printf("结果为:%d",ans);
return 0;
}