Numbers with prime digits whose sum is 13: Difference between revisions

m
→‎{{header|Pascal}}: unnessasary gblnominator...
m (→‎{{header|Pascal}}: comment modified)
m (→‎{{header|Pascal}}: unnessasary gblnominator...)
Line 716:
MAXNUM = 113;
var
gblPrimDgtCnt :tDigits;
gblCount: NativeUint;
gblNom :array [0..MAXNUM Div 2] of NativeUInt;
 
function isPrime(n: NativeUint):boolean;
Line 741 ⟶ 740:
 
procedure Sort(var t:tDigits);
// Sort descending to minimize * / in Calcpermcount
var
i,j,k: NativeUint;
Line 766 ⟶ 764:
//TempDgtCnt[0] = 3 and TempDgtCnt[1..3]= 2 -> dgtcnt = 3+3*2= 9
//permcount = dgtcnt! /(TempDgtCnt[0]!*TempDgtCnt[1]!*TempDgtCnt[2]!*TempDgtCnt[3]!);
//TempDgtCnt[0] = 3 and TempDgtCnt[1..3]= 2 -dgtcnt = 3+3*2= 9
 
//nom = 1,2,3, 4,5,6,7,8,9
//denom = 1,2,3, 1,2,1,2,1,2
var
pgblNom : ^NativeUInt;
TempDgtCnt : tdigits;
i,f : NativeUint;
begin
TempDgtCnt := gblPrimDgtCnt;
Sort(TempDgtCnt);
pgblNom := @gblNom[1];
//jump over 1/1*2/2*3/3*4/4*..* TempDgtCnt[0]/TempDgtCnt[0]
inc(pgblNom,f := TempDgtCnt[0])+1;
result :=1;
 
For i := 1 to TempDgtCnt[1] do
Begin
result := (result*pgblNom^f) DIV i;
inc(pgblNomf);
end;
For i := 1 to TempDgtCnt[2] do
Begin
result := (result*pgblNom^f) DIV i;
inc(pgblNomf);
end;
For i := 1 to TempDgtCnt[3] do
Begin
result := (result*pgblNom^f) DIV i;
inc(pgblNomf);
end;
end;
Line 826 ⟶ 822:
BEGIN
writeln('Sum':6,'Count of arrangements':25);
// array for n! 1,2,3,4,5,6..n
gblNom[0]:= 1;
For i := 1 to High(gblNom) do
gblNom[i] := i;
 
Num := 1;
Line 835 ⟶ 827:
inc(num);
if Not(isPrime(Num)) then
CONTINUE;
gblCount := 0;
sum7 :=num;
Anonymous user