java问题,求教!!!!!!!

题目描述

小明很喜欢3和5这两个数字,他将能被3或5整除的数叫做美丽数。现在给你一个整数N(1<=N<=100000),你能告诉小明第N个美丽数是多少吗?

输入格式

输入包含多组测试数据。每组输入一个整数N(1<=N<=100000)。

输出

对于每组输入,输出第N个美丽数。

样例输入

1
2
3
4

样例输出

3
5
6
9

import java.util.Scanner;
public class Main{
  public static void main(String[] args){
    Scanner input=new Scanner(System.in);
    while(input.hasNextInt()){
      int N=input.nextInt();
      int count=0;
      for(int num=3;count<100000;num++){
        if(num % 3==0 || num % 5==0){
          count++;
          if(count==N){
            System.out.println(num);
            break;}
        }
    }
}
}
}


为什么说我是时间超限了

 public static void main(String[] args) {
        Scanner input=new Scanner(System.in);

        ArrayList list = new ArrayList();
        while(input.hasNextInt()){
          int N=input.nextInt();
          list.add(N);
        }
        Integer[] array = (Integer[])list.toArray(new Integer[list.size()]); 
        Arrays.sort(array);

        int maxNum = 0;//获取最大需要的数值
        maxNum = array[array.length-1]*3;//按3的倍数估算,最大需要该数值
        int num=0;
        int cnt =0;
        while(num<=maxNum&&cnt<array[array.length-1]){
            num++;//步长还是可以优化的。没必要每次都是+1
            if(num%3==0 || num%5==0){
                cnt++;
                if(list.contains(cnt)){
                    System.out.println(num);
                }
            }
        }
    }

3 5 6 9 10 12 15 18 20 21 24 25 27 30
15为一个周期,每15就有7个美丽数。

int count = 0;
for( int i = 0, i < 100, i++) {
if(i%5 == 0&& i%3 == 0){
count ++;
}
}
return count;

for(int num=3;count<100000;num++){