ACM题目————数素数

 

令Pi表示第i个素数。现任给两个正整数M <= N <= 104,请输出PM到PN的所有素数。

输入格式:

输入在一行中给出M和N,其间以空格分隔。

输出格式:

输出从PM到PN的所有素数,每10个数字占1行,其间以空格分隔,但行末不得有多余空格。

输入样例:
5 27
输出样例:
11 13 17 19 23 29 31 37 41 43
47 53 59 61 67 71 73 79 83 89
97 101 103

试试证明,预处理很重要!

复制代码
#include <cstdio>
#include <iostream>
#include <cstring>
#include <cmath>
using namespace std;

#define NUM 10004
int primes[NUM];

void findPrimes(){
    int cnt=0;
    int a = 2;
    while (cnt <= NUM) {
        // 排除偶数
        if (a % 2 == 0 && a != 2) {
            ++a;
            continue;
        }

        int i = 0;
        for (i = 0; i < sqrt(cnt); ++i) {
            if (a % primes[i] == 0) {
                break;
            }
        }
        if (i >= sqrt(cnt)) {
            primes[cnt] = a;
            cnt++;

        }
        ++a;
    }
    
}
int main(){
    findPrimes();
    int m,n;
    cin >> m >> n;
    for(int i = m; i <= n; ++i){
        
        cout << primes[i-1];
        if ((i-m+1) % 10 == 0 || i == n) {
            printf("\n");
        }else{
            printf(" ");
        }
        
    }
} 
复制代码
posted @   Asimple  阅读(435)  评论(0编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
点击右上角即可分享
微信分享提示