AOJ1503 Numbers

問題リンク Numbers

  • 解法

合成数 連続」などで検索すると、次のことが分かります、目からウロコでした。
合成数がN個連続している場所は、
(N+1)!+2, (N+1)!+3, ... , (N+1)!+(N+1)
であるというのです。
(N+1)!は2〜N+1のどれでも割りきれます。なので、上のN個の整数はそれぞれ、
2, 3, ... , N+1
で割りきれるので合成数なわけです。
すっげぇと唸ったところであとは、BigIntegerの力を借りるだけです。

  • ソース
import java.math.BigInteger;
import java.util.Scanner;

//Numbers
public class AOJ1503 {

	void run(){
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		BigInteger b = BigInteger.ONE;
		for(int i=2;i<=n+1;i++)b = b.multiply(BigInteger.valueOf(i));
		System.out.println(b.add(BigInteger.valueOf(2)));
		for(int i=2;i<=n+1;i++)System.out.println(i);
	}
	
	public static void main(String[] args) {
		new AOJ1503().run();
	}
}