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

m
→‎{{header|Wren}}: Changed to Wren S/H
(→‎{{header|QuickBASIC}}: Added a solution.)
m (→‎{{header|Wren}}: Changed to Wren S/H)
 
(6 intermediate revisions by 4 users not shown)
Line 453:
52
64</pre>
 
=={{header|Delphi}}==
{{works with|Delphi|6.0}}
{{libheader|SysUtils,StdCtrls}}
 
 
<syntaxhighlight lang="Delphi">
procedure GetDigits(N: integer; var IA: TIntegerDynArray);
{Get an array of the integers in a number}
{Numbers returned from least to most significant}
var T,I,DC: integer;
begin
DC:=Trunc(Log10(N))+1;
SetLength(IA,DC);
for I:=0 to DC-1 do
begin
T:=N mod 10;
N:=N div 10;
IA[I]:=T;
end;
end;
 
 
procedure SquareCubeDigitsPrime(Memo: TMemo);
var Dg1,Dg2: TIntegerDynArray;
var SQ,CU: integer;
var Sum1,Sum2: integer;
var I,J: integer;
var S: string;
begin
S:='';
for I:=1 to 100-1 do
begin
SQ:=I*I;
CU:=I*I*I;
GetDigits(SQ,Dg1);
GetDigits(CU,Dg2);
Sum1:=0;
for J:=0 to High(Dg1) do Sum1:=Sum1+Dg1[J];
Sum2:=0;
for J:=0 to High(Dg2) do Sum2:=Sum2+Dg2[J];
if IsPrime(Sum1) and IsPrime(Sum2) then
S:=S+' '+IntToStr(I);
end;
Memo.Lines.Add(S);
end;
 
 
 
</syntaxhighlight>
{{out}}
<pre>
16 17 25 28 34 37 47 52 64
 
Elapsed Time: 1.809 ms.
</pre>
 
 
=={{header|F_Sharp|F#}}==
Line 668 ⟶ 725:
52
64</pre>
 
=={{header|Nim}}==
<syntaxhighlight lang="Nim">const Primes = {2, 3, 5, 7, 11, 13, 17, 19}
 
func digitSum(n: Positive): int =
## Return the sum of digits of "n".
var n = n.Natural
while n != 0:
result += n mod 10
n = n div 10
 
for n in 5..99:
let n² = n * n
if digitSum(n²) in Primes and digitSum(n * n²) in Primes:
stdout.write n, ' '
echo()
</syntaxhighlight>
 
{{out}}
<pre>16 17 25 28 34 37 47 52 64 </pre>
 
=={{header|OCaml}}==
Line 926 ⟶ 1,003:
16 17 25 28 34 37 47 52 64
done...
</pre>
 
=={{header|Ruby}}==
<syntaxhighlight lang="ruby">require 'prime'
 
p (1..100).select{|n|(n*n).digits.sum.prime? && (n**3).digits.sum.prime?}</syntaxhighlight>
{{out}}
<pre>
[16, 17, 25, 28, 34, 37, 47, 52, 64]
</pre>
 
=={{header|Rust}}==
<syntaxhighlight lang="rust">
fn is_prime( number : u32 ) -> bool {
if number < 2 {
false
}
else {
let limit : u32 = (number as f32).sqrt( ).floor( ) as u32 ;
let mut nums : Vec<u32> = Vec::new( ) ;
for i in 2..=limit {
nums.push( i ) ;
}
nums.iter( ).filter( | n | number % *n == 0 ).count( ) == 0
}
}
 
fn to_digits( mut number : u32 ) -> Vec<u32> {
let mut digits : Vec<u32> = Vec::new( ) ;
while number != 0 {
let remainder : u32 = number % 10 ;
digits.push( remainder ) ;
number /= 10 ;
}
digits
}
 
fn digit_sum( number : u32 ) -> u32 {
let digits : Vec<u32> = to_digits( number ) ;
digits.iter( ).sum( )
}
 
fn main() {
let mut solution : Vec<u32> = Vec::new( ) ;
for i in 2..=100 {
let square = i * i ;
let cube = square * i ;
if is_prime( digit_sum( square ) ) && is_prime( digit_sum(cube ) ) {
solution.push( i ) ;
}
}
println!("{:?}" , solution);
}</syntaxhighlight>
{{out}}
<pre>
[16, 17, 25, 28, 34, 37, 47, 52, 64]
</pre>
 
Line 937 ⟶ 1,070:
=={{header|Wren}}==
{{libheader|Wren-math}}
<syntaxhighlight lang="ecmascriptwren">import "./math" for Int
 
for (i in 1..99) {
9,476

edits