求助站外题
  • 板块学术版
  • 楼主W_churchill
  • 当前回复22
  • 已保存回复22
  • 发布时间2020/8/27 11:23
  • 上次更新2023/11/6 19:11:58
查看原帖
求助站外题
224791
W_churchill楼主2020/8/27 11:23

题目:题目描述

已知两个正整数a和b,求在a与b之间(包含a和b)的所有整数中,所有质数的和。例如:a = 1, b = 10,那么a与b之间的质数有2,3,5,7,它们的和是17。

输入

第1行:一个正整数N,表示有N组数据。

第2..N+1行:每行两个整数a和b,之间用一个空格隔开。

输出

共N行,每行一个答案。
我的代码:

#include<bits/stdc++.h>
using namespace std;
const int N=1000010;
long long k[N];
bool prime(int x)
{
    for(int i=2;i*i<=x;i++)
        if(x%i==0) return false;
    return true;
}
int main()
{
    k[1]=2;
    int ss=2;
    for(int i=3;i<=N;i++)
    {
        if(prime(i)==true)
        {
            k[ss]=k[ss-1]+i;
            ss++;
        }
    }
    cout<<endl;
    long long w,a,b;
    cin>>w;
    int sum;
    for(int i=1;i<=w;i++)
    {
        cin>>a>>b;
        sum=0;
        for(int j=a;j<=b;j++)
            if(prime(j)==true&&j!=1)
                sum++;
        cout<<k[sum]<<endl;
    }
    return 0;
}

为什么时间超限了 qwq

2020/8/27 11:23
加载中...