#2483. 聪明的小李(东莞2011初赛第4题)

聪明的小李(东莞2011初赛第4题)

Description

小李是希望小学六年级的学生,在一次数学课上,张老师出了一道题,小李很快就答出来了。这个题目是这样的:给定一个正整数N,请求出2~N之间长度最长的、成等差数列的素数(质数)。例如:当N的值为40时,在2~40之间的全部素数有: 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37。其中公差(每两个数之间的差)为1的素数数列为23,其长度(素数的个数)为2, 公差为2的素数数列为35, 7,其长度为3. ……  

Input Format

数据从文件sushu.in中读入,只有一个正整数N2<N<=10000)。

Output Format

数据输出到文件sushu.out中,第一行只有一个数t,表示2~N之间长度最长的、成等差数列的素数(质数)的个数,第二行有t个数,表示符合条件的素数数列,两个数之间用空格隔开(如果最长长度相同的素数列有多种方案,则输出第一个数数值最小的那个数列)。

40
5
5 11 17 23 29

Hint

提示 :1、所谓等差数列就是每两个数之间的差都相等的一列数。
2、本题算法可为:首先用筛选法求2-N之间的全部素数,存放在数组B中,然后用2个变量i,j分别表示数列的第一个数和公差,将求出的每个素数尝试作为素数列的第一个数,公差逐步增大,从而求出满足条件的素数数列。

Source

素数筛选法