digitSum

引数に指定した数字和(数値の各桁を足した結果)を返します。正の整数以外を指定した場合は、エラー値を返します。

構文
  1. Integer = digitSum( num )
引数
num
数値(正の整数)
戻値
各桁の数値の和

プログラム

////////////////////////////////////////////////// // 【引数】 // num : 数値(正の整数) // 【戻値】 // 各桁の数値の和 ////////////////////////////////////////////////// FUNCTION digitSum(num) DIM res = 0 IFB VARTYPE(ABS(num, VAR_DWORD)) = num THEN // 正の整数ならば FOR n = 1 TO LENGTH(num) res = res + VAL(COPY(num, n, 1)) NEXT ELSE res = ERR_VALUE ENDIF RESULT = res FEND

プログラム実行例

各桁の和を求める

458の各桁の和(=4+5+8)を求める。
PRINT digitSum(458) ////////////////////////////////////////////////// // 【引数】 // num : 数値(正の整数) // 【戻値】 // 各桁の数値の和 ////////////////////////////////////////////////// FUNCTION digitSum(num) DIM res = 0 IFB VARTYPE(ABS(num, VAR_DWORD)) = num THEN // 正の整数ならば FOR n = 1 TO LENGTH(num) res = res + VAL(COPY(num, n, 1)) NEXT ELSE res = ERR_VALUE ENDIF RESULT = res FEND
結果
17

ソウルナンバーを求める

桁が一桁になるか、ゾロ目になるまで各桁を足し続ける。

生年月日をyyyymmddの形式で指定する。

DIM n = 20000501 REPEAT n = digitSum(n) UNTIL LENGTH(n) = 1 OR COPY(n, 1, 1) = COPY(n, 2, 1) PRINT n ////////////////////////////////////////////////// // 【引数】 // num : 数値(正の整数) // 【戻値】 // 各桁の数値の和 ////////////////////////////////////////////////// FUNCTION digitSum(num) DIM res = 0 IFB VARTYPE(ABS(num, VAR_DWORD)) = num THEN // 正の整数ならば FOR n = 1 TO LENGTH(num) res = res + VAL(COPY(num, n, 1)) NEXT ELSE res = ERR_VALUE ENDIF RESULT = res FEND
結果
8

この記事は役に立ちましたか?
役に立った 役に立たなかった