图-查找丑数

package Week1;

import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.StringTokenizer;
import java.util.TreeSet;
//只能被2,被3或者被5整除的数为丑数,求出1500个丑数,数只有2a*3b*5c因子
public class B_Ugly {
    static TreeSet<Integer> set = new TreeSet<Integer>();
    static int n = 1601;
    public static void main(String[] args) throws Exception{
    	System.setIn(new FileInputStream("Solution.txt"));
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st = null;
		
		
    	set.add(1);
    	int loop=1;
    	int x = 1;
    	while(set.size() < n) {
    		addSet(x);
    		x=setAt(++loop);
    	}
    	
    	boolean flag = true;
    	while(flag) {
    		st = new StringTokenizer(br.readLine());
    		int n = Integer.parseInt(st.nextToken());
    		List  list = new ArrayList(set);//
    		if(n==0) {
    			flag=false;
    			break;
    		} 
    			System.out.println(list.get(n-1));
    		
    	}
    	
    	
	}
    
    
    private static int setAt(int i) {
		int n = 0;
		Iterator<Integer> it = set.iterator();
		int j = 1;
		while(it.hasNext()) {
			n = it.next();
			if(j==i) {
				return n;
			}
			j++;
		}
		return n;
	}


	public static void addSet(int n) {
    	set.add(n*2);
    	set.add(n*3);
    	set.add(n*5);
    }
    
    
    
}

  

posted @ 2021-08-01 18:40  没带壳的蜗牛  阅读(26)  评论(0)    收藏  举报