Problem7

package com.shui.mu.yao.io.algorithm;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

/**
 * 
 * @author shuimuqinghua77 @date 2011-11-3上午10:56:33
 * 
 */
/**
 * By listing the first six prime numbers: 2, 3, 5, 7, 11, and 13, we can see
 * that the 6th prime is 13. What is the 10 001st prime number?
 */
public class Problem7 {
	private static List<Long> seed = new ArrayList<Long>();
	private static long count=7;
	static {
		seed.add(2l);
		seed.add(3l);
		seed.add(5l);

	}

	public static long findPrime(int index) throws Exception {
		while (seed.size()<index) {
			if(count==Long.MAX_VALUE)
			{
				throw new Exception("超过long类型最大值");
			}
			int flag=0;
			for(long l:seed){
				if(count%l==0)
				{
					flag=1;
					break;
				}
				
			}
			if(flag==0)
			seed.add(count);
			count++;
		}
		return seed.get(index-1);
	}
	public static void main(String[] args) throws Exception {
		long result=findPrime(10001);
		System.out.println(result);
		System.out.println(Arrays.toString(seed.toArray()));
	}
}

你可能感兴趣的:(java,Algorithm)