Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
大家是用什么办法判断素数的?筛选法空间不够吧我的总是TLE。。。 #include <iostream> #define MS 40000000 using namespace std; bool prime[MS]; inline bool isprime(int n) { if(n<MS) return prime[n]; for(int i=2; i*i<= n; i++) if(prime[i]) //i is a prime { if(n%i == 0){ return false; } } return true; } main() { int i,j; prime[1]=0; for(i=2; i<MS; i++) prime[i] = 1; for(i=2;i<MS/2;i++) { if(prime[i]) { for(j=i*2;j<MS;j=j+i) prime[j]=0; } } int L,U; int c1,c2,d1,d2,lp; int cdis,ddis; while(cin>>L>>U) { int cnt=0; cdis=1000000,ddis=0;lp=-1; for(i=L; i<=U; i++) if(isprime(i)) { if(cnt++ %2 == 0) i=(i+U)/2; if(lp>0) //last prime is not void { if(i-lp < cdis){ cdis=i-lp; c1 = lp; c2 = i; } if(i-lp > ddis){ ddis=i-lp; d1 = lp; d2 = i; } } lp = i; } if(cdis == 1000000 || ddis == 0) cout<<"There are no adjacent primes."<<endl; else cout<<c1<<","<<c2<<" are closest, " <<d1<<","<<d2<<"are most distant."<<endl; } return 0; } Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator