专栏文章

题解:P14073 [GESP202509 五级] 数字选取

P14073题解参与者 1已保存评论 0

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
0 条
当前快照
1 份
快照标识符
@minqull7
此快照首次捕获于
2025/12/02 06:51
3 个月前
此快照最后确认于
2025/12/02 06:51
3 个月前
查看原文
这道题很简单的,反正我看到就秒了

思路

题目的意思是要求在 11nn 中选一些数,使得选取中的数两两互质,要最大化选取的个数。
要想要两两互质,那就应该选取质数,那问题就变成了求 11nn 中质数的个数。
但注意, 11 虽然不是质数,但它和任何数的最大公因数都是 11,所以 11 也要算进去。

代码

CPP
#include<bits/stdc++.h>
using namespace std;
bool isPrime(int n){
    if(n==2||n==1) return true;//1本身不是质数,但为了简便,在判断质数时特判了1
    if(n%2==0) return false;
    for(int i=3;i*i<=n;i+=2){
        if(n%i==0) return false;
    }
    return true;
}
int main(){
    int n;
    cin>>n;
    int Prime=0;
    for(int i=1;i<=n;i++){
        if(isPrime(i)) Prime++;
    }
    cout<<Prime;
    return 0;
}

评论

0 条评论,欢迎与作者交流。

正在加载评论...