A number whose only prime factors are 2,3,5 or 7 is called a humble number. The sequence 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 14, 15, 16, 18, 20, 21, 24, 25, 27, ... shows the first 20 humble numbers.
Write a program to find and print the nth element in this sequence
Write a program to find and print the nth element in this sequence
#include <stdio.h>
#define min(a,b) ((a) < (b) ? (a):(b))
#define min4(a,b,c,d) min(min(a,b),min(c,d))
int ans[6000];
void fun()
{
int a2,a3,a5,a7;
int n = 1;
ans[1] = 1;
a2 = a3 = a5 = a7 = 1;
while(ans[n] < 2000000000)
{
ans[++n] = min4(2*ans[a2],3*ans[a3],5*ans[a5],7*ans[a7]);
if(ans[n] == 2*ans[a2])
a2 += 1;
if(ans[n] == 3*ans[a3])
a3 += 1;
if(ans[n] == 5*ans[a5])
a5 += 1;
if(ans[n] == 7*ans[a7])
a7 += 1;
}
}
int main()
{
int n,ten;
fun();
while(~scanf("%d",&n))
{
printf("The %d",n);
ten = n/10%10;
if(n%10 == 1 && ten != 1)
printf("st");
else if(n%10 == 2 && ten != 1)
printf("nd");
else if(n%10 == 3 && ten != 1)
printf("rd");
else
printf("th");
printf(" humble number is %d.\n",ans[n]);
}
return 0;
}