Sum of square and cube digits of an integer are primes: Difference between revisions

From Rosetta Code
Content added Content deleted
(Added XPL0 example.)
Line 63: Line 63:
}
}
System.print()</lang>
System.print()</lang>

{{out}}
<pre>
16 17 25 28 34 37 47 52 64
</pre>

=={{header|XPL0}}==
<lang XPL0>func IsPrime(N); \Return 'true' if N is prime
int N, I;
[if N <= 2 then return N = 2;
if (N&1) = 0 then \even >2\ return false;
for I:= 3 to sqrt(N) do
[if rem(N/I) = 0 then return false;
I:= I+1;
];
return true;
];

func SumDigits(N); \Return the sum of digits in N
int N, Sum;
[Sum:= 0;
while N do
[N:= N/10;
Sum:= Sum + rem(0);
];
return Sum;
];

int N;
[for N:= 0 to 100-1 do
if IsPrime(SumDigits(N*N)) & IsPrime(SumDigits(N*N*N)) then
[IntOut(0, N); ChOut(0, ^ )];
]</lang>


{{out}}
{{out}}

Revision as of 16:47, 21 December 2021

Sum of square and cube digits of an integer are primes is a draft programming task. It is not yet considered ready to be promoted as a complete task, for reasons that should be found in its talk page.
Task


Sum of square and cube digits of an integer n are primes, where n<100

Phix

with javascript_semantics
function scdp(integer n)
    return is_prime(sum(sq_sub(sprintf("%d",n*n),'0')))
       and is_prime(sum(sq_sub(sprintf("%d",n*n*n),'0')))
end function
pp(filter(tagset(99),scdp))
Output:
{16,17,25,28,34,37,47,52,64}

Raku

<lang perl6>say ^100 .grep: { .².comb.sum.is-prime && .³.comb.sum.is-prime }</lang>

Output:
(16 17 25 28 34 37 47 52 64)

Ring

<lang ring> load "stdlib.ring" see "working..." +nl

limit = 100

for n = 1 to limit

   sums = 0
   sumc = 0
   sps = string(pow(n,2))
   spc = string(pow(n,3))
   for m = 1 to len(sps)
       sums = sums + sps[m]
   next
   for p = 1 to len(spc)
       sumc = sumc + spc[p]
   next
   if isprime(sums) and isprime(sumc)
      see "" + n + " "
   ok

next

see nl + "done..." + nl </lang>

Output:
working...
16 17 25 28 34 37 47 52 64 
done...

Wren

Library: Wren-math

<lang ecmascript>import "./math" for Int

for (i in 1..99) {

   if (Int.isPrime(Int.digitSum(i*i)) && Int.isPrime(Int.digitSum(i*i*i))) System.write("%(i) ")

} System.print()</lang>

Output:
16 17 25 28 34 37 47 52 64 

XPL0

<lang XPL0>func IsPrime(N); \Return 'true' if N is prime int N, I; [if N <= 2 then return N = 2; if (N&1) = 0 then \even >2\ return false; for I:= 3 to sqrt(N) do

   [if rem(N/I) = 0 then return false;
   I:= I+1;
   ];

return true; ];

func SumDigits(N); \Return the sum of digits in N int N, Sum; [Sum:= 0; while N do

   [N:= N/10;
   Sum:= Sum + rem(0);
   ];

return Sum; ];

int N; [for N:= 0 to 100-1 do

   if IsPrime(SumDigits(N*N)) & IsPrime(SumDigits(N*N*N)) then
       [IntOut(0, N);  ChOut(0, ^ )];

]</lang>

Output:
16 17 25 28 34 37 47 52 64