#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 < n
  • i <= n/2
  • i * i <= n
  • i*i >=n

4、分解质因数,循环结束后如果n!=1,说明?() {{ select(4) }}

  • 不需要做任何处理
  • 还剩下一个大质因数,需要输出
  • 代表输入数字是1
  • 代表数字是合数,无质因数

5、埃氏筛法数组标记规则,下面描述正确的是?() {{ select(5) }}

  • 0标记质数,1标记合数
  • 1标记质数,0标记合数
  • 数组全部初始化为1代表质数
  • 数组下标不能代表数字

6、埃氏筛内层循环,为减少运算,j的起始位置为?() {{ select(6) }}

  • j = 2*i
  • j = 2
  • j = i+1
  • j = 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) }}

  • 正确
  • 错误