记录编号 364500 评测结果 AWWAAAAAAA
题目名称 区间质数和 最终得分 80
用户昵称 GravatarFoolMike 是否通过 未通过
代码语言 C++ 运行时间 1.660 s
提交时间 2017-01-16 20:11:52 内存使用 0.29 MiB
显示代码纯文本
#include<cstdio>
#include<algorithm>
#include<ctime>
using namespace std;
typedef long long ll;
const ll mod=23333333333333333ll;
const int p[25]={2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,93};
int rand_int(){return rand()<<15|rand();}
ll mul(ll a,ll b,ll p){
	return (a*b-(ll)(a/(long double)p*b+1e-3)*p+p)%p;
}
ll mi(ll x,ll y,ll p){
	ll ans=1;
	for (;y;y>>=1,x=mul(x,x,p))
		if (y&1) ans=mul(ans,x,p);
	return ans;
}
bool check(ll x){
	if (x==1) return 0;
	for (int i=0;i<25;i++){
		if (x==p[i]) return 1;
		if (!(x%p[i])) return 0;
	}
	for (int i=25;i;i--){
		int p=rand_int()%(x-1)+1;
		if (mi(p,x-1,x)!=1) return 0;
	}
	return 1;
}
int main()
{
	freopen("bigprime.in","r",stdin);
	freopen("bigprime.out","w",stdout);
	ll l,r,ans=0;
	scanf("%lld%lld",&l,&r);
	srand(unsigned(time(NULL)));
	for (;l<=r;l++)
		if (check(l)) ans=(ans+l)%mod;
	printf("%lld\n",ans);
	return 0;
}