邓老师数
时间限制:1 sec
空间限制:256 MB
问题描述
众所周知,大于 1 的自然数中,除了 1 与其本身外不再有其他因数的数称作质数(素数)。
对于大于 1 的不是质数的自然数,我们又称作合数。
参加了邓老师算法训练营的小 Z 突发奇想,定义了新的数:所有合数中,除了 1 与其本身外,其他因数均为质数的数,称作邓老师数。
现在,小 Z 给定两个数 n,k,其中 k 的取值为 0 或 1。如果 k=0,小 Z 希望你告诉他所有不超过 n 的质数;如果 k=1,小 Z 希望你告诉他所有不超过 n 的邓老师数。
输入格式
一行两个用空格隔开的整数 n,k,意义见题目描述。
输出格式
对于每个找到的质数或邓老师数,输出一行一个整数表示这个你找到的数。
请升序输出所有答案。
样例输入
9 1
样例输出
4
6
9
样例解释
4 除去 1 与其本身外的因子有 2,均为质数,因此 4 是邓老师数。
6 除去 1 与其本身外的因子有 2,3,均为质数,因此 6 是邓老师数。
9 除去 1 与其本身外的因子有 3,均为质数,因此 9 是邓老师数。
8 除去 1 与其本身外的因子有 2,4,由于 4 不是质数,因此 8 不是邓老师数。
数据范围
本题共设置 8 个测试点,测试点编号从 1 至 8。
对于前 4 个测试点,保证 n<=1,000。
对于编号为偶数的测试点,保证 k=0;对于编号为奇数的测试点,保证 k=1。
对于所有的 8 个测试点,保证 n<=2*10^5。
提示
[对于求质数的问题,可以直接用Eratosthenes筛法求解。]
[对于求邓老师数的问题,考虑Eratosthenes筛法中“筛去”合数的逻辑,是否可以对其略作修改,使之支持筛出“非邓老师数”呢?]
另外,为了帮助大家完成题目,我们提供了只包含了输入输出功能的程序模板,也提供了含有算法的大部分实现细节的程序。
你可以根据自己的实际情况,在这些程序的基础上进行作答,或不参考这些程序,这将与你的得分无关。
这些程序可以从【这里】下载。