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