C,
pasted
on May 8:
|
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
//#define N 1000000
#define TABSIZE 100000
static int primeS[TABSIZE];
static int sumS[TABSIZE];
int maketable(int N) {
int n, i, r, q, idx;
primeS[0] = 2;
primeS[1] = 3;
idx = 2;
for (n = 4; n < N; n++) {
i = 0;
do {
r = n % primeS[i];
if (r == 0)
break;
q = n / primeS[i];
i++;
} while (primeS[i] < q);
if (r > 0) {
primeS[idx] = n;
idx++;
if (idx > TABSIZE) {
fprintf(stderr, "table size is too small, aborted. idx = %d\n", idx);
exit(-1);
}
}
}
return idx;
}
int foundp(int s, int n) {
int max, min, mid;
max = n - 1; min = 0;
while (max > min) {
mid = (max + min) / 2;
if (primeS[mid] == s)
return 1;
if (primeS[mid] < s)
min = mid + 1;
else
max = mid - 1;
}
if (primeS[min] == s)
return 1;
return 0;
}
int task(int argc, char *argv[]) {
int n, p;
int i, j, k;
int max_i, max_j, max_k, max_s;
int N;
time_t stt, end;
if (argc != 2) {
// fprintf(stderr, "usage: %s <num>\n", argv[0]);
N = 1000000;
} else {
N = atoi(argv[1]);
}
// stt = time(NULL);
n = maketable(N);
// for (i = 0; i < n; i++)
// sumS[i] = primeS[i];
memcpy(sumS, primeS, sizeof(int) * n);
p = primeS[n - 1];
// printf("n = %d(%d)\n", n, p);
max_i = max_j = max_k = max_s = 0;
for (i = 1; i < n; i++) {
for (j = i - 1; j >= 0; j--) {
sumS[j] += primeS[i];
k = i - j;
if (sumS[j] > p)
break;
if ((sumS[j] % 2) && foundp(sumS[j], n)) {
if (k > max_k) {
max_i = i; max_j = j; max_k = k; max_s = sumS[j];
}
}
}
}
printf("max prime: %d, series: form %d to %d (%d)\n", max_s, primeS[max_j], primeS[max_i], max_k + 1);
// end = time(NULL);
// printf("time: %d sec\n", end - stt);
return 0;
}
int main() {
for (;;) {
task(1, "test");
fflush(stdout);
}
}
/* end */
|
Output:
|
max prime: 997651, series: form 7 to 3931 (543)
max prime: 997651, series: form 7 to 3931 (543)
max prime: 997651, series: form 7 to 3931 (543)
max prime: 997651, series: form 7 to 3931 (543)
max prime: 997651, series: form 7 to 3931 (543)
max prime: 997651, series: form 7 to 3931 (543)
max prime: 997651, series: form 7 to 3931 (543)
max prime: 997651, series: form 7 to 3931 (543)
max prime: 997651, series: form 7 to 3931 (543)
max prime: 997651, series: form 7 to 3931 (543)
max prime: 997651, series: form 7 to 3931 (543)
max prime: 997651, series: form 7 to 3931 (543)
max prime: 997651, series: form 7 to 3931 (543)
max prime: 997651, series: form 7 to 3931 (543)
Timeout
|
|