文章

211

粉丝

0

获赞

1076

访问

36.0k

头像
非素数个数 题解:
P1701 厦门大学机试题
发布于2026年2月5日 20:00
阅读数 364

#include<bits/stdc++.h>
using namespace std;

const int MAX = 1e7 + 5;

bool isPrime[MAX];// 埃氏筛预处理素数

void sieve() {
    // 初始化:假设都是素数
    for(int i = 0; i < MAX; i++) isPrime[i] = true;  
    // 0和1:1是素数(题目特殊规定),0不是
    isPrime[0] = false;
    isPrime[1] = true;  // 题目说1也算素数  
    for(int i = 2; i * i < MAX; i++) {
        if(isPrime[i]) {
            for(int j = i * i; j < MAX; j += i)
                isPrime[j] = false;
        }
    }
}
int main() {
    // 预处理
    sieve();  
    int a, b;
    while(cin >> a >> b) {
        int count = 0;  // 非素数个数
        for(int i = a; i <= b; i++) {
            if(!isPrime[i]) 
				count++;
        }
        cout << count << endl;
    }   
    return 0;
}

 

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发