题目描述:
小 C 擅长计算,整天都在进行着各种各样的计算。
这不,小 C 又开始了一个计算问题:输入两个数 L、R,输出所有 L 到 R 之间(包括 L、R)的质数的和。
输入格式
从文件 sum.in 中读取数据。
一行两个整数 L、R
输出格式
输出到文件 sum.out 中。
一个数
输入输出详列
输入样例1:
15 23
输出样例1:
59
输入样例2:
123456789 123457789
输出样例2:
5925949806
说明
对于 30%的数据,1 ≤ L ≤ R ≤ 1000
对于 100%的数据,1 ≤ L ≤ R ≤ 10^9,R - L ≤ 1000
【耗时限制】1000ms 【内存限制】128MB
没啥好说的,一个函数判断质数,主程序看下面。
#include <iostream>
#include <cstdio>
#include <cmath>
#include <string.h>
#include <sstream>
#include <cstring>
#include <algorithm>
using namespace std;
const long long maxn=1e9+10;
bool isprime(int n){
if(n<2) return false;
for(int i=2;i*i<=n;i++)
if(n%i==0) return false;
return true;
}
int main(){
int l,r;
long long ans=0;
cin>>l>>r;
for(int i=l;i<=r;i++)if(isprime(i)) ans+=i;
cout<<ans<<endl;
return 0;
}