136 Ugly Numbers

题目大意

题目原文:http://uva.onlinejudge.org/external/1/136.pdf

因子只有2,3,5的数被称为Ugly Number。题目要求输出第1500个Ugly Number。

判断一个数是否只有2,3,5因子,只需将这个数一直除以2,3,5知道不能整除为止。如果最后结果是1的话,那么这个数就是Ugly Number。

但是这样的做法从1开始判断下来到第1500个数答案为八亿多,耗时20多秒才计算完成。不过题目没有测试数据,只需要最后结果,那么只需将最后结果输出就可以了。

一下附上计算代码和AC代码:

计算代码
 1 #include<stdio.h>
 2 int bo(int x)//判断x是不是Ugly Number,返回为1代表是,0代表不是 
 3 {
 4  while(x%2==0) 
 5  {
 6   x/=2;
 7  }
 8   while(x%3==0) 
 9  {
10   x/=3;
11  }
12   while(x%5==0) 
13  {
14   x/=5;
15  }
16  if(x==1) return 1;
17  else return 0;
18 }
19 int main()
20 {
21  long i=0,j=1;
22  while(j<=1500)
23  {
24   i++;
25   if(bo(i)==1) printf("%d %ld\n",j++,i);//从1输出到1500
26  } 
27  printf("The 1500'th ugly number is %ld.",i);
28  getchar();
29  return 0;
30 }
AC代码
1 #include<stdio.h>
2 int main()
3 {
4  printf("The 1500'th ugly number is 860934420.\n");
5  return 0;   
6 }
原文地址:https://www.cnblogs.com/syiml/p/2909885.html