分解质因数求公约数,不会求时间复杂度


//分解质因数
#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;
 }