求第1500个只有2,3,5因子的数

来源:互联网 发布:java获取自己程序名字 编辑:程序博客网 时间:2024/06/15 12:19

最近看到一个题目:求第1500个只有2,3,5因子的数。数是从小到大排列,第一个数是1,1=2^0*3^0*5^0。 要求用C/C++实现。


方法1:容易理解,但是时间复杂度太大

#include <stdio.h>#include<iostream>#include <math.h>bool isGet(int num){     while(num%2==0)    {       num/=2;    }    while(num%3==0)    {       num/=3;    }    while(num%5==0)    {       num/=5;    }    if(num==1)    {       returntrue;    }    else    {       returnfalse;    }}int main(){    intcount=1;//计数器    intnum=1;//    while(count<=1500)    {    if(isGet(num))    {       count++;    }    num++;    }    num--;    printf("num=%d",num);}


方法2 : 时间复杂度较小

#include <stdio.h>#include<iostream>#include <math.h>long min(long num1,long num2,long num3){    longtemp=num1;    if(num2<temp)    {    temp=num2;    }    if(num3<temp)    {       temp=num3;    }    returntemp;}int main(){    inti2_mul=1;    inti3_mul=1;    inti5_mul=1;    longugly[1501];     ugly[1]=1;       for(int i=2;i<=1500;i++)    {       ugly[i]=min(ugly[i2_mul]*2,ugly[i3_mul]*3,ugly[i5_mul]*5);       if(ugly[i]==ugly[i2_mul]*2)       {           i2_mul++;       }       if(ugly[i]==ugly[i3_mul]*3)       {           i3_mul++;       }       if(ugly[i]==ugly[i5_mul]*5)       {           i5_mul++;       }    }    printf("结果是:%d",ugly[1500]);  }


原创粉丝点击