Extra primes: Difference between revisions

m (→‎{{header|Phix}}: added syntax colouring the hard way)
Line 538:
7723
7727</pre>
 
=={{header|D}}==
{{trans|Java}}
<lang d>import std.stdio;
 
int nextPrimeDigitNumber(int n) {
if (n == 0) {
return 2;
}
switch (n % 10) {
case 2:
return n + 1;
case 3:
case 5:
return n + 2;
default:
return 2 + nextPrimeDigitNumber(n / 10) * 10;
}
}
 
bool isPrime(int n) {
if (n < 2) {
return false;
}
if ((n & 1) == 0) {
return n == 2;
}
if (n % 3 == 0) {
return n == 3;
}
if (n % 5 == 0) {
return n == 5;
}
 
int p = 7;
while (true) {
foreach (w; [4, 2, 4, 2, 4, 6, 2, 6]) {
if (p * p > n) {
return true;
}
if (n % p == 0) {
return false;
}
p += w;
}
}
}
 
int digitSum(int n) {
int sum = 0;
for (; n > 0; n /= 10) {
sum += n % 10;
}
return sum;
}
 
void main() {
immutable limit = 10_000;
int p = 0;
int n = 0;
 
writeln("Extra primes under ", limit);
while (p < limit) {
p = nextPrimeDigitNumber(p);
if (isPrime(p) && isPrime(digitSum(p))) {
n++;
writefln("%2d: %d", n, p);
}
}
writeln;
}</lang>
{{out}}
<pre>Extra primes under 10000
1: 2
2: 3
3: 5
4: 7
5: 23
6: 223
7: 227
8: 337
9: 353
10: 373
11: 557
12: 577
13: 733
14: 757
15: 773
16: 2333
17: 2357
18: 2377
19: 2557
20: 2753
21: 2777
22: 3253
23: 3257
24: 3323
25: 3527
26: 3727
27: 5233
28: 5237
29: 5273
30: 5323
31: 5527
32: 7237
33: 7253
34: 7523
35: 7723
36: 7727</pre>
 
=={{header|F_Sharp|F#}}==
1,452

edits