flash on 2010-5-10
♥0 |
Line 58 |
Modified 2010-05-10 15:16:09 |
MIT License
archived:2017-03-20 06:44:27
ActionScript3 source code
/**
* Copyright uwi ( http://wonderfl.net/user/uwi )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/56cZ
*/
package {
import flash.display.Sprite;
import flash.text.TextField;
public class Test extends Sprite {
private var _tf : TextField;
public function Test() {
_tf = new TextField();
_tf.width = 465;
_tf.height = 465;
addChild(_tf);
var N : uint = 28;
var divs : Vector.<uint> = enumDivs(N);
divs.sort(Array.NUMERIC);
var len : uint = 1 << divs.length;
var j : uint, p : uint;
var sums : Array = new Array(N);
for(var i : uint = 1;i < len;i++){
var sum : uint = 0;
for(j = i, p = 0;j > 0;j >>>= 1, p++){
if(j & 1)sum += divs[p];
}
if(sum <= N && !sums[sum-1]){
var con : Array = [];
for(j = i, p = 0;j > 0;j >>>= 1, p++){
if(j & 1)con.push(divs[p]);
}
sums[sum-1] = con.join("+");
}
}
var f : Boolean = true;
for(i = 0;i < N;i++){
if(sums[i]){
tr((i+1) + "=" + sums[i]);
}else{
f = false;
}
}
tr(f);
}
private function enumDivs(n : uint) : Vector.<uint>
{
var ret : Vector.<uint> = new Vector.<uint>();
for(var i : uint = 1;i * i <= n;i++){
if(n % i == 0){
ret.push(i);
if(i * i != n){
ret.push(n / i);
}
}
}
return ret;
}
private function tr(...o : Array) : void
{
_tf.appendText(o + "\n");
}
}
}