返回首页 返回题库

数字选取

C++ 中等 GESP五级真题 #筛法#质数#数论

题目描述

题面描述

给定正整数,现在有共计个整数。你需要从这个整数中选取一些整数,使得所选取的整数中任意两个不同的整数均互质(也就是说,这两个整数的最大公因数为1)。请你最大化所选取整数的数量。

例如,当时,可以选择共计5个整数。可以验证不存在数量更多的选取整数的方案。

输入格式

一行,一个正整数,表示给定的正整数。

输出格式

一行,一个正整数,表示所选取整数的最大数量。

样例1

输入:

6

输出:

4

样例2

输入:

9

输出:

5

数据范围

对于40%的测试点,保证。

对于所有测试点,保证。

时间限制

1.0 s

内存限制

512.0 MB

💡 查看提示(先自己想一想再看)
核心考察埃氏筛或线性筛求解质数数量的知识点。解题思路:互质的数最多选取情况为选1加上所有不超过n的质数,因为任意两个质数的最大公因数都是1,1和所有数都互质,此时数量达到最大。注意n=1时的边界情况处理,筛法实现时要注意数组大小和效率以适配1e5的数据范围。
⚙ 开始做这道题 0 人做过 · 0 收藏 · 5 浏览

讨论(0)