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> |
||