#JC1066. 质数筛法
质数筛法
一、单项选择题(每题2分,共20分)
1、下面关于质数、合数说法正确的是?() {{ select(1) }}
- 1是质数
- 0是合数
- 大于1,只能被1和自身整除的数是质数
- 所有偶数都是合数
2、写判断质数函数check(n),n小于2的时候,返回值应当是?()
{{ select(2) }}
- true
- false
- 0
- 1
3、质数判断循环优化,循环终止条件应当写成?() {{ select(3) }}
i < ni <= n/2i * i <= ni*i >=n
4、分解质因数,循环结束后如果n!=1,说明?()
{{ select(4) }}
- 不需要做任何处理
- 还剩下一个大质因数,需要输出
- 代表输入数字是1
- 代表数字是合数,无质因数
5、埃氏筛法数组标记规则,下面描述正确的是?() {{ select(5) }}
- 0标记质数,1标记合数
- 1标记质数,0标记合数
- 数组全部初始化为1代表质数
- 数组下标不能代表数字
6、埃氏筛内层循环,为减少运算,j的起始位置为?() {{ select(6) }}
j = 2*ij = 2j = i+1j = i*i
7、埃氏筛法的主要缺点是?() {{ select(7) }}
- 代码极其复杂,很难实现
- 合数会被多次重复筛除
- 无法筛出100以内质数
- 只能筛很小范围数字
8、欧拉筛(线性筛)核心目标是?() {{ select(8) }}
- 每个合数被所有质因数筛一遍
- 每个合数只被它最小质因数筛一次
- 只筛奇数,跳过偶数
- 只保存合数,丢弃质数
9、欧拉筛代码中if(i % b[j]==0) break;这条语句作用是?()
{{ select(9) }}
- 直接结束整个程序
- 输出当前质数
- 避免重复筛除合数,保证线性效率
- 标记合数
10、蛇形素数矩阵题目,解题的第一步是?() {{ select(10) }}
- 直接暴力模拟矩阵填数
- 不需要筛法,直接输出
- 只判断偶数是否为质数
- 先筛出足够数量的质数
二、判断题(每题2分,共10分)
11、数字0和1既不是质数,也不是合数。() {{ select(11) }}
- 正确
- 错误
12、分解质因数的时候,循环结束n不等于1,可以直接忽略不用输出。() {{ select(12) }}
- 正确
- 错误
13、埃氏筛法可以把内层循环从i*i开始,减少循环执行次数。()
{{ select(13) }}
- 正确
- 错误
14、欧拉筛如果去掉if(i%b[j]==0) break;语句,依旧是线性筛。()
{{ select(14) }}
- 正确
- 错误
15、欧拉筛需要两个数组,一个做标记,一个存储已经找到的质数。() {{ select(15) }}
- 正确
- 错误