Erdős-primes: Difference between revisions

→‎{{header|C}}: Updated in line with Wren example of which it is a translation.
(→‎{{header|Go}}: Updated in line with Wren example of which it is a translation.)
(→‎{{header|C}}: Updated in line with Wren example of which it is a translation.)
Line 418:
 
#define LIMIT 1000000
#define LOWER_LIMIT 2500
 
bool isPrime*sieve(int nlimit) {
ifint (ni, < 2) return falsep;
if (n%2 == 0) return n == 2;
if (n%3 == 0) return n == 3;
int d = 5;
while (d*d <= n) {
if (n%d == 0) return false;
d += 2;
if (n%d == 0) return false;
d += 4;
}
return true;
}
 
int *primeSieve(int limit, int *length) {
int i, p, *primes;
int j, pc = 0;
limit++;
// True denotes composite, false denotes prime.
Line 452 ⟶ 438:
}
}
return truec;
for (i = 0; i < limit; ++i) {
if (!c[i]) ++pc;
}
primes = (int *)malloc(pc * sizeof(int));
for (i = 0, j = 0; i < limit; ++i) {
if (!c[i]) primes[j++] = i;
}
free(c);
*length = pc;
return primes;
}
 
int main() {
int i, j, fact, p, pc, lc, ec = 0, llec2 = 25000, showlastErdos = 78750;
bool found;
intbool *primesc = primeSievesieve(LIMIT, &pc-1);
int *erdos = (int *)malloc(show * sizeof(int))[30];
for (i = 02; i < pc && ec < showLIMIT; ++i) {
pif = primes(!c[i];) {
j = 1;
fact = 1;
found = true;
while (fact < pi) {
if (isPrime(p!c[i-fact)]) {
found = false;
break;
d += 4; }
if (!c[i]) ++pcj;
fact *= j;
d += 2; }
lcif =(found) i;{
if (!c[i] < LOWER_LIMIT) primeserdos[jec2++] = i;
++j lastErdos = i;
break ++ec;
}
++j;
fact *= j;
}
if (found) erdos[ec++] = p;
}
for (i = 0; i < ec; ++i) {
if (erdos[i] >= ll) {
lc = i;
break;
}
for ( i = 0,(i j> =2) 0;? i <+ limit;2 : ++i) {+ 1;
}
setlocale(LC_NUMERIC, "");
printf("The %'d Erdős primes under %'d are:\n", lcec2, llLOWER_LIMIT);
for (i = 0; i < lcec2; ++i) {
printf("%6d ", erdos[i]);
if (!((i+1)%10)) printf("\n");
}
printf("\n\nThe %'dth Erdős prime is %'d.\n", showec, erdos[show-1]lastErdos);
free(primesc);
free(erdos);
return 0;
}</syntaxhighlight>
9,482

edits