Nice primes: Difference between revisions

Content deleted Content added
→‎{{header|ALGOL W}}: Faster digital root algorithm
Added C++ solution
Line 104: Line 104:
32:983 dr(2)
32:983 dr(2)
33:997 dr(7)
33:997 dr(7)
</pre>

=={{header|C++}}==
<lang cpp>#include <iostream>

bool is_prime(unsigned int n) {
if (n < 2)
return false;
if (n % 2 == 0)
return n == 2;
if (n % 3 == 0)
return n == 3;
for (unsigned int p = 5; p * p <= n; p += 4) {
if (n % p == 0)
return false;
p += 2;
if (n % p == 0)
return false;
}
return true;
}

unsigned int digital_root(unsigned int n) {
return n == 0 ? 0 : 1 + (n - 1) % 9;
}

int main() {
std::cout << "Nice primes between 500 and 1000:\n";
for (unsigned int n = 501; n < 1000; n += 2) {
if (is_prime(n) && is_prime(digital_root(n)))
std::cout << n << '\n';
}
}</lang>

{{out}}
<pre>
Nice primes between 500 and 1000:
509
547
563
569
587
599
601
617
619
641
653
659
673
677
691
709
727
743
761
797
821
839
853
857
887
907
911
929
941
947
977
983
997
</pre>
</pre>