CodeChef submission 271732 (C++ 4.3.2) plaintext list. Status: TLE, problem PRIME1, contest . By opeth (opeth), 2010-06-22 21:53:05.
#include<iostream> #include<cstdlib> #include<cmath> #include<cstring> #include<vector> #include<stdio.h> #include<time.h> #define prime 0 #define notprime 1 #define FOR(i,a) for(i=0; i<a; i++) using namespace std; bool isPrime[32000] = {0}; vector<int> primes; //prime = new int[3500]; void primesMN(int m, int n, bool primeMN[]); void sieve() {//Eratosthenes Sieve /*int i=0, cur, end=0, count; isPrime[0] = isPrime[1] = notprime; cur = 2; while(!end) { for(i=2*cur; i<32000; i=i+cur) isPrime[i] = notprime; while(1) { if((cur+1)==32000) {end=1; break;} if(isPrime[cur+1]==prime) {cur++; break;} else cur++; } } count = 0; for(i=0; i<32000; i++) { if(isPrime[i]==0) { prime[count] = i; count++; } }*/ int i, j, flag=1; primes.push_back(2); for(i=3; i<32000; i++) { flag = 1; for(j=0; j<primes.size(); j++) { if(i%primes[j]==0) {flag=0; break;} } if(flag) primes.push_back(i); else continue; } } int main() { int m, n, t; sieve(); while(t--) { bool primeMN[100002] = {0}; primesMN(m, n, primeMN); } return 0; } void primesMN(int m, int n, bool primeMN[]) { int index = 0, i, mul, nonPrime; while(1) { for(i=0; i<=n-m; i++) { if((i+m)%primes[index]==0) { mul = i; break; } } if(primes[index]==(mul+m)) nonPrime = primes[index] + mul; else nonPrime = mul; for(i=nonPrime; i<=n-m; i+=primes[index]) { primeMN[i] = notprime; } index++; if(primes[index]==31991||primes[index]>=n) break; } i=0; if(m==1) i=1; for(;i<=n-m;i++) { if(primeMN[i]==prime) } }
Comments

