divisors

引数に指定した数値の約数をリストを配列で返します。

構文
  1. Array = divisors( num )
引数
num
約数を求める数値
戻値
約数を格納した配列

プログラム

////////////////////////////////////////////////// // 【引数】 // num : 約数を求める数値 // 【戻値】 // 約数を格納した配列 ////////////////////////////////////////////////// FUNCTION divisors(num) DIM arr[-1] FOR n = 1 TO num / 2 IF num MOD n = 0 THEN arrayPush(arr, n) NEXT arrayPush(arr, num) RESULT = SLICE(arr) FEND ////////////////////////////////////////////////// // 【引数】 // array : 要素を追加する配列(参照引数) // str : 追加する要素 // 【戻値】 // 処理後の配列の中の要素の数 ////////////////////////////////////////////////// FUNCTION arrayPush(var arr[], str) DIM res = RESIZE(arr, UBound(arr) + 1) arr[res] = str RESULT = res + 1 FEND ////////////////////////////////////////////////// // 【引数】 // 配列 : 上限値を求める配列 // 【戻値】 // 配列の上限値 ////////////////////////////////////////////////// FUNCTION UBound(array[]) RESULT = RESIZE(array) FEND

プログラム実行例

1000の約数を出力

DIM arr = divisors(1000) FOR item IN arr PRINT item NEXT ////////////////////////////////////////////////// // 【引数】 // array : 要素を追加する配列(参照引数) // str : 追加する要素 // 【戻値】 // 処理後の配列の中の要素の数 ////////////////////////////////////////////////// FUNCTION arrayPush(var arr[], str) DIM res = RESIZE(arr, UBound(arr) + 1) arr[res] = str RESULT = res + 1 FEND ////////////////////////////////////////////////// // 【引数】 // num : 約数を求める数値 // 【戻値】 // 約数を格納した配列 ////////////////////////////////////////////////// FUNCTION divisors(num) DIM arr[-1] FOR n = 1 TO num / 2 IF num MOD n = 0 THEN arrayPush(arr, n) NEXT arrayPush(arr, num) RESULT = SLICE(arr) FEND ////////////////////////////////////////////////// // 【引数】 // 配列 : 上限値を求める配列 // 【戻値】 // 配列の上限値 ////////////////////////////////////////////////// FUNCTION UBound(array[]) RESULT = RESIZE(array) FEND
結果
1
2
4
5
8
10
20
25
40
50
100
125
200
250
500
1000