1 条题解

  • 0
    @ 2025-8-28 11:52:15

    本题考查对于质数的概念。 质数的概念是:因数只有它自己和11,也就是意味着对于一个质数kk,因数和函数满足σ(k)=1+k\sigma(k)=1+k。我们首先对0和1进行特判,然后我们一个个枚举是否有一个整数xx满足kmodx=0k\bmod x=0,如果有整数xx,则说明kk不是质数,如果枚举完成,还没有xx满足,说明kk是一个质数。因为本题数据较小,我们可以直接用时间复杂度O(n)O(\sqrt{n})的线性筛。我们上代码:

    #include <bits/stdc++.h>
    using namespace std;
    int a;
    int main(void) {
    	cin >> a;
    	if (a == 0 || a == 1) {
    		cout << 0;
    		return 0; // 提前结束
    	}
    	for (int i = 2;i * i <= a;++i) { // 因为sqrt(n)是比较慢的,所以用i * i 代替
    		if (a % i == 0) {
    			cout << 0;
    			return 0;
    		}
    	}
    	// 如果两轮下来都没有被筛走,说明是质数
    	cout << 1;
    	return 0;
    }

    信息

    ID
    78
    时间
    1000ms
    内存
    256MiB
    难度
    2
    标签
    递交数
    3
    已通过
    3
    上传者