非常經(jīng)典的遞推計算。基本思想是設(shè)3個指針,分別表示3個素數(shù)乘到哪了,然后通過比較3個指針位置的遞推結(jié)果來確定下一個數(shù)是什么。
具體實現(xiàn)見代碼。
#include <stdio.h>
int u[2000],i,n,p2,p3,p5;

int main()
{
p2=p3=p5=u[1]=1;

for (i=2;i<=1500;i++)
{
if (u[p2]*2<u[p3]*3 && u[p2]*2<u[p5]*5) u[i]=u[p2++]*2;
else if (u[p3]*3<u[p2]*2 && u[p3]*3<u[p5]*5) u[i]=u[p3++]*3;
else if (u[p5]*5<u[p2]*2 && u[p5]*5<u[p3]*3) u[i]=u[p5++]*5;
else if (u[p2]*2==u[p3]*3 && u[p2]*2<u[p5]*5) u[i]=u[p2++]*2,p3++;
else if (u[p2]*2==u[p5]*5 && u[p2]*2<u[p3]*3) u[i]=u[p2++]*2,p5++;
else if (u[p3]*3==u[p5]*5 && u[p3]*3<u[p2]*2) u[i]=u[p3++]*3,p5++;
else if (u[p2]*2==u[p3]*3 && u[p3]*3==u[p5]*5) u[i]=u[p2++]*2,p3++,p5++;
}
while (scanf("%d",&n),n!=0) printf("%d\n",u[n]);
return 0;
}