Problem:
Problem D : Numbers

n が与えられるので、n 個の連続した正の整数を求めよ。
ただしすべての数が、１とその数自身以外の約数をもたなくてはならない。

Input

入力は以下のフォーマットで与えられる。

n

入力は以下の制約を満たす。

1 ≤ n ≤ 1,500

Output

最初の行に、あなたが選んだ連続したn 個の正の整数の中で一番小さいものを出力せよ。

2行目からn+1 行目に、それぞれの値に対する約数を出力せよ。

約数は1かその数自身でなければどの値を出力しても良い。

1行目に出力した数をxとして、i行目には x+i-2 の約数を出力せよ。

出力する値は5,000桁を超えてはいけない。

Sample Input 1

2

Sample Output 1

8
2
3

Sample Input 2

3

Sample Output 2

8
2
3
5

Hint

Sample Output 2では、8,9,10を3個の連続した整数として選んでいる。

2行目に、8の約数として2,3行目は9の約数として3,４行目には10の約数として5,を出力している。

Solution in C++ (judge verdict: Time Limit Exceeded)

#include <iostream>
#include <vector>
using namespace std;

int sosuu(int no){
	if(no % 2 == 0){
		return 2;
	}
	for(int i = 3; i *i <= no; i += 2){
		if(no % i == 0){
			return i;
		}
	}
	return -1;
}

int main(void)
{
	int n;
	cin >> n;
	int no = 4, ret[1500];
	bool flag;
	int i = 0;
	while(i < n){
		ret[i] = sosuu(no + i);
		if(ret[i] == -1){
			i = 0;
			no++;
		}else{ i++; }
	}

	cout << no << endl;
	for(int j = 0; j < n; j++)	cout << ret[j] << endl;
}