L. 素数筛选(Hard)(7.27)

传统 500 ms 256 MiB
标准 IO
文本比较

题目描述

素数(质数)是指大于 11 的自然数中,除了 11 和它本身外没有其他正因数的数。
给定一个正整数 nn,请输出区间 [2,n][2,n] 内的所有素数。

注意反常的时间限制

输入格式

一行一个正整数 nn

输出格式

第一行输出 The Prime Numbers between 1 and n are:,其中 n 替换为输入的数值。

接下来,每行输出 1010 个素数,每个素数占用 88 个字符宽度,每个素数占 88 个字符宽度输出后,再输出一个空格(见提示)。

最后一行输出 Total of k prime numbers between 1 and n.,其中 k 替换为素数的个数。

样例

输入 1

8

输出 1

The Prime Numbers between 1 and 8 are:
       2        3        5        7
Total of 4 prime numbers between 1 and 8.

输入 2

50

输出 2

The Prime Numbers between 1 and 50 are:
       2        3        5        7       11       13       17       19       23       29
      31       37       41       43       47
Total of 15 prime numbers between 1 and 50.

数据范围与提示

数据范围

档位 nn 上限 难度
1 10410^4 Easy
2 10510^5 Medium
3 2×1062\times10^6 Hard(选做)

提示

  • C++ 中可以用 cout << setw(8) << P[i] << ' '; 来设置输出宽度为 88 并留空格,右对齐。
  • 【medium】试除法判断时,需要判断到 [2,n1][2, n-1] 中的每一个数吗?
  • 【hard】约数和倍数的关系是什么?