首页 > 试题广场 >

寻找丑数

[编程题]寻找丑数
  • 热度指数:170 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 64M,其他语言128M
  • 算法知识视频讲解
把只包含因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。

输入描述:
整数N


输出描述:
第N个丑数
示例1

输入

6

输出

6
import java.util.*;
public class Main {
   static boolean isUgly(int j ){
        boolean result=false;
        while(j!=1 ){
          
           if(j % 2 ==0 && j!=1){
               j=j/2;
           }else if (j % 3 ==0 && j!=1){
               j=j/3;
           }else if (j % 5 ==0 && j!=1){
               j=j/5;
           }else{
               result=false;
                break;
           }
           if(j==1){
               result=true;
               break;
           }
           //j++;
         }
      
        return result;
    }
    public static void main (String[] args){
         //Test a=new Test();
        Scanner s=new Scanner(System.in);
         int n=s.nextInt();
         //n=100;
         int j=2;
         int count=0;
         int max=10000;
         int b=n-1;  
         while(count!=b && j<max ){
            if( isUgly(j)){
                //System.out.println("Ugly : " + j);
                count++;
            };
           if(count==b){
           break;
           }
             j++;
         
         }
         //System.out.println("Output : " + j);
        System.out.println( j);
    }
    
    
}

发表于 2021-05-11 16:16:48 回复(0)
A = int(input())
dic = dict((i,i) for i in range(1, 7))
n = 7
k = 7
if A <= 6:
    print(A)
else:
    while k <= A:    
        num = n
        while num != 1:
            if num % 2 == 0:
                num = num // 2
            elif num % 3 == 0:
                num = num // 3
            elif num % 5 == 0:
                num = num // 5
            else:
                n += 1
                break
            if num in dic.values() or num == 1:
                dic[k] = n
                k += 1
                n += 1
                break
    print(dic[A])


发表于 2019-08-30 21:19:37 回复(0)
# -*- coding: utf-8 -*-

 
n =int(input())
num =1
flag =True
i =2
 
whileTrue:
    ni =i
    whileni%2==0:
        ni =ni/2
    whileni%3==0:
        ni =ni/3
    whileni%5==0:
        ni =ni/5
    ifni ==1:
        num =num +1
    ifnum ==n:
        break
    i =i +1
print(i)
发表于 2018-11-26 17:57:09 回复(0)