#include<stdio.h>
#include<math.h>
#define m 5000000//定义太大机器跑不起来
bool b[m];
int main()
{
int i,j,n,num=0,a[1505]={0,1,2,3,4,5,6};
bool *p;
for(p=b;p<(b+m);p++)*p=1;
int end=m/2;
for(i=7;i<=end;i++)//筛选 符合要求的数
{
if(i%2==0||i%3==0||i%5==0);
else b[i]=0;
if(b[i]==0)
for(j=i;j<m;j+=i)
{
b[j]=0;
}
}
printf("%d/n",b[m-1]); //观察是否运行到此步 、、可不要
for(i=1;i<=50;i++) printf("%d %d/n",i,b[i]);
while(scanf("%d",&n)&&n)
{
num=0;
for(i=1;;i++)
{
if(b[i])num++;
if(num==n)break;
}
printf("%d/n",i);
}
}
//之快速方法 我参考了别人的代码
#include<stdio.h>
int main()
{
int i,n,num1,num2,num3,a,b,c,min1;
int ugly[1505]={0,1};
num1=num2=num3=1;
ugly[1]=1;
for(i=2;i<=1500;i++)
{
a=2*ugly[num1];b=3*ugly[num2];c=5*ugly[num3];
ugly[i]=(min1=a<b? a:b)<c? min1:c;
if(ugly[i]==a)num1++;
if(ugly[i]==b)num2++;
if(ugly[i]==c)num3++;
}
//for(i=1;i<=50;i++)printf("%d ",ugly[i]);
while(scanf("%d",&n)&&n)
{
printf("%d/n",ugly[n]);
}
return 0;
}