题目:题目描述
已知两个正整数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