Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
63
Task/Digital-root/ALGOL-W/digital-root.alg
Normal file
63
Task/Digital-root/ALGOL-W/digital-root.alg
Normal file
|
|
@ -0,0 +1,63 @@
|
|||
begin
|
||||
|
||||
% calculates the digital root and persistence of an integer in base 10 %
|
||||
% in order to allow for numbers larger than 2^31, the number is passed %
|
||||
% as the lower and upper digits e.g. 393900588225 can be processed by %
|
||||
% specifying upper = 393900, lower = 58825 %
|
||||
procedure findDigitalRoot( integer value upper, lower
|
||||
; integer result digitalRoot, persistence
|
||||
) ;
|
||||
begin
|
||||
|
||||
integer procedure sumDigits( integer value n ) ;
|
||||
begin
|
||||
integer digits, sum;
|
||||
|
||||
digits := abs n;
|
||||
sum := 0;
|
||||
|
||||
while digits > 0
|
||||
do begin
|
||||
sum := sum + ( digits rem 10 );
|
||||
digits := digits div 10
|
||||
end % while digits > 0 % ;
|
||||
|
||||
% result: % sum
|
||||
end sumDigits;
|
||||
|
||||
digitalRoot := sumDigits( upper ) + sumDigits( lower );
|
||||
persistence := 1;
|
||||
|
||||
while digitalRoot > 9
|
||||
do begin
|
||||
persistence := persistence + 1;
|
||||
digitalRoot := sumDigits( digitalRoot );
|
||||
end % while digitalRoot > 9 % ;
|
||||
|
||||
end findDigitalRoot ;
|
||||
|
||||
% calculates and prints the digital root and persistence %
|
||||
procedure printDigitalRootAndPersistence( integer value upper, lower ) ;
|
||||
begin
|
||||
integer digitalRoot, persistence;
|
||||
findDigitalRoot( upper, lower, digitalRoot, persistence );
|
||||
write( s_w := 0 % set field saeparator width for this statement %
|
||||
, i_w := 8 % set integer field width for this statement %
|
||||
, upper
|
||||
, ", "
|
||||
, lower
|
||||
, i_w := 2 % change integer field width %
|
||||
, ": digital root: "
|
||||
, digitalRoot
|
||||
, ", persistence: "
|
||||
, persistence
|
||||
)
|
||||
end printDigitalRootAndPersistence ;
|
||||
|
||||
% test the digital root and persistence procedures %
|
||||
printDigitalRootAndPersistence( 0, 627615 );
|
||||
printDigitalRootAndPersistence( 0, 39390 );
|
||||
printDigitalRootAndPersistence( 0, 588225 );
|
||||
printDigitalRootAndPersistence( 393900, 588225 )
|
||||
|
||||
end.
|
||||
Loading…
Add table
Add a link
Reference in a new issue