所谓丑数,就是不能被2,3,5,7以外的其他素数整除的数。1,2,3,4,5,6,7,8,9,10,12,14,15,16,18是最前面的15个丑数。
此处主要是怎么打表:
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
int main()
{
freopen("in.txt","r",stdin);
__int64 a[5843],x1,x2,x4,x3;
a[1] = 1;
x1 = x2 = x3 = x4 = 1;
for(int i = 1;i <= 5842; ){ //要点
a[++i] = min(min(a[x1]*2,a[x2]*3),min(a[x3]*5,a[x4]*7));
if(a[i] == a[x1]*2) x1++;
if(a[i] == a[x2]*3) x2++;
if(a[i] == a[x3]*5) x3++;
if(a[i] == a[x4]*7) x4++;
}
string s;
sort(a+1,a+5841);
int n;
while(cin>>n&&n)
{
if(n%10==1&&n%100!=11)
s="st";
else if(n%10==2&&n%100!=12)
s="nd";
else if(n%10==3&&n%100!=13)
s="rd";
else s="th";
cout<<"The "<<n<<s<<" humble number is "<<a[n]<<"."<<endl;
}
return 0;
}