Sum of square and cube digits of an integer are primes: Difference between revisions
Sum of square and cube digits of an integer are primes (view source)
Revision as of 15:49, 15 April 2022
, 2 years ago→{{header|Python}}
Line 479:
=={{header|Python}}==
===Procedural===
<lang python>#!/usr/bin/python
Line 501 ⟶ 502:
{{out}}
<pre>16 17 25 28 34 37 47 52 64</pre>
===Functional===
<lang python>'''Square and cube both have prime decimal digit sums'''
# p :: Int -> Bool
def p(n):
'''True if the square and the cube of N both have
decimal digit sums which are prime.
'''
return primeDigitSum(n ** 2) and primeDigitSum(n ** 3)
# ------------------------- TEST -------------------------
# main :: IO ()
def main():
'''Matches in the range [1..99]'''
print([
x for x in range(2, 100)
if p(x)
])
# ----------------------- GENERIC ------------------------
# primeDigitSum :: Int -> Bool
def primeDigitSum(n):
'''True if the sum of the decimal digits of n is prime.
'''
return isPrime(digitSum(10)(n))
# digitSum :: Int -> Int
def digitSum(base):
'''The sum of the digits of n in a given base.
'''
def go(n):
q, r = divmod(n, base)
return go(q) + r if n else 0
return go
# isPrime :: Int -> Bool
def isPrime(n):
'''True if n is prime.'''
if n in (2, 3):
return True
if 2 > n or 0 == n % 2:
return False
if 9 > n:
return True
if 0 == n % 3:
return False
def q(x):
return 0 == n % x or 0 == n % (2 + x)
return not any(map(q, range(5, 1 + int(n ** 0.5), 6)))
# MAIN ---
if __name__ == '__main__':
main()</lang>
{{Out}}
<pre>[16, 17, 25, 28, 34, 37, 47, 52, 64]</pre>
=={{header|Quackery}}==
|