The 5842nd humble number is 2000000000.
#include<iostream>using
namespace 
std;long
int 
x[5900];int
num2=0,num3=0,num5=0,num7=0;void
t(){
    x[0]=1;    for(int
i=1;i<5900;i++)    {      int
min=x[num2]*2,b=x[num3]*3,c=x[num5]*5,d=x[num7]*7;        if(min>b)        {            min=b;        }        if(min>c)        {            min=c;        }        if(min>d)        {            min=d;        }        x[i]=min;        if(x[i]==x[num2]*2)            num2++;        if(x[i]==x[num3]*3)            num3++;        if(x[i]==x[num5]*5)            num5++;        if(x[i]==x[num7]*7)            num7++;        }}int
main(){    int
n;    t();    while(cin>>n&&n!=0)    {        if(n%10==1&&n!=11)        cout<<"The"<<"
 "<<n<<"st"<<"
 "<<"humble
 number is "<<x[n-1]<<"."<<endl;        else
if(n%10==2&&n!=12)            cout<<"The"<<"
 "<<n<<"nd"<<"
 "<<"humble
 number is "<<x[n-1]<<"."<<endl;        else
if(n%10==3&&n!=13)            cout<<"The"<<"
 "<<n<<"rd"<<"
 "<<"humble
 number is "<<x[n-1]<<"."<<endl;        else
cout<<"The"<<"
 "<<n<<"th"<<"
 "<<"humble
 number is "<<x[n-1]<<"."<<endl;    }    return
0;}一直因子只能是2,3,5,7,所以分别用四个量来表示,通过将最小值放入数组中构造成功
另外需要考虑输出形式,在11,12,13处分别有小陷阱需注意
原文:http://blog.csdn.net/u013240812/article/details/25830615