CodeChef submission 272144 (C++ 4.3.2) plaintext list. Status: TLE, problem PRIME1, contest . By opeth (opeth), 2010-06-23 20:22:01.
#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; int primes[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 MakePrimes3(int limit) { primes[0]=2, primes[1]=3, primes[2]=5; int maybeprime = primes[2] + 2; int *primePtr = primes; for(int j=3; j<limit; j++) { for(;;) { int currentprime = *(primePtr++); long int currentprime2 = currentprime * currentprime; if(currentprime2 > maybeprime) { primes[j] = maybeprime; primePtr = primes + 1; maybeprime += 2; break; } if(maybeprime % currentprime == 0) { maybeprime += 2; primePtr = primes + 1; } } } } int main() { int m, n, t; MakePrimes3(3432); 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

