日期:2014-05-16  浏览次数:20669 次

某博客看到的面试题,帮忙看看是我理解错了,还是程序错了
我们把只包含因子2、3和5的数称作丑数(Ugly Number)。
例如6、8都是丑数,但14不是,因为它包含因子7。习惯上我们把1当做是第一个丑数。
#include <stdio.h>

int first_chk(int no)
{
    if(no%2==0||
       no%3==0||
       no%5==0)
        return 0;
    return -1;
}
int second_chk(int no)
{
    if(no%4==0||
       no%6==0||
       no%7==0||
       no%8==0||
       no%9==0)
        return -1;
    return 0;
}
main()
{
    int i=0;
    int count=1;
    int array[2013];

    for(i=2;i<1000000000;i++)
    {
        if(2012==count)
            break;
        if(!first_chk(i))
            if(!second_chk(i))
            {
                array[count]=i;
                printf("the [%d]-->%d\n",count,array[count]);
                count++;
            }
    }
    return;
}


大家帮忙多多指点!
C

------解决方案--------------------
你这算法有问题吧。在看看那算法。
------解决方案--------------------
bool IsUgly(int number)
 
{
 
    while(number % 2 == 0)
 
        number /= 2;
 
    while(number % 3 == 0)
 
        number /= 3;
 
    while(number % 5 == 0)
 
        number /= 5;
 


    return (number == 1) ? true : false;
 
}