Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Actionscript 3 使用Actionscript 3进行素因子分解_Actionscript 3_Flash_Primes_Factorization_Factors - Fatal编程技术网

Actionscript 3 使用Actionscript 3进行素因子分解

Actionscript 3 使用Actionscript 3进行素因子分解,actionscript-3,flash,primes,factorization,factors,Actionscript 3,Flash,Primes,Factorization,Factors,我目前正在尝试制作一个程序,它能够对任何给定的数字进行素数分解,但我遇到了一些问题。我已经编写了一个程序来生成第一个x素数,我想我可以用这个程序来解决我以前的任务 我遇到的问题是,该程序只能对小数字进行素数分解。当我为var-tall输入一个更大的数字时,答案是错误的。有人对我如何让程序正常工作有什么建议吗 我对这门语言还不熟悉,我相信编写代码可能会更有效 import flash.events.MouseEvent; factorize.addEventListener(MouseEvent.

我目前正在尝试制作一个程序,它能够对任何给定的数字进行素数分解,但我遇到了一些问题。我已经编写了一个程序来生成第一个x素数,我想我可以用这个程序来解决我以前的任务

我遇到的问题是,该程序只能对小数字进行素数分解。当我为
var-tall
输入一个更大的数字时,答案是错误的。有人对我如何让程序正常工作有什么建议吗

我对这门语言还不熟悉,我相信编写代码可能会更有效

import flash.events.MouseEvent;
factorize.addEventListener(MouseEvent.CLICK, func1);
var primeNumbers: Array = new Array(2, 3); //the first primal numbers
var maxNum = 100;

function check(num) {
    for (var i = (num - 1); i > 1; i--) {
        if ((num % i) == 0) {
            return false;
        }
    }
    return true;
}

var lastNum: int = primeNumbers[primeNumbers.length - 1];
var nextNum: int = lastNum + 1;

while (primeNumbers.length < maxNum) {
    if (check(nextNum) == true) {
        primeNumbers.push(nextNum);
        nextNum++;
    } else nextNum++;
}
trace(primeNumbers);



function func1 (evt:MouseEvent) { //factorizing function
    var tall:int = 18; //the number i want i factorize
    var num:int = 0;
    var factor:Array = new Array();

    while (num<tall) {
        while (int(tall/primeNumbers[num]) == tall/primeNumbers[num]) {
            trace(tall+"/"+primeNumbers[num]+"="+tall/primeNumbers[num])
            factor.push(primeNumbers[num]);

            var next = tall/primeNumbers[num];
            while (int(next/primeNumbers[num]) == next/primeNumbers[num]) {
                factor.push(primeNumbers[num])
                trace(next+"/"+primeNumbers[num]+"="+next/primeNumbers[num])


                var next2 = next/primeNumbers[num];
                while (int(next2/primeNumbers[num]) == next2/primeNumbers[num]) {
                    factor.push(primeNumbers[num])
                    trace(next2+"/"+primeNumbers[num]+"="+next2/primeNumbers[num])


                    var next2 = next/primeNumbers[num];
                    while (int(next2/primeNumbers[num]) == next2/primeNumbers[num]) {
                        factor.push(primeNumbers[num])
                        trace(next2+"/"+primeNumbers[num]+"="+next2/primeNumbers[num])
                        num++;
                    }
                num++;
                }
            num++;
            }
        num++;
        }
    num++;
    }
    trace(tall + " = " + factor);
}
导入flash.events.MouseEvent;
factorize.addEventListener(MouseEvent.CLICK,func1);
变量素数:数组=新数组(2,3)//第一原始数
var maxNum=100;
功能检查(num){
对于(var i=(num-1);i>1;i--){
如果((数量%i)==0){
返回false;
}
}
返回true;
}
var lastNum:int=primeNumbers[primeNumbers.length-1];
var nextNum:int=lastNum+1;
while(primeNumbers.length
function prime_factorization( n:int ): Array {

    var a:Array = [] ;

    for (var i:int = 2; i <= n / i; i++) {  

        while (n % i == 0) {

            a.push(i) ;
            n = n / i ;

        }

    }

    if (n > 1) a.push(n) ;

    return a ;

}

trace(prime_factorization(12)) ;            // gives : 2,2,3
trace(prime_factorization(288)) ;           // gives : 2,2,2,2,2,3,3
trace(prime_factorization(35206)) ;         // gives : 2,29,607
函数素数分解(n:int):数组{ var a:Array=[]; 对于(var i:int=2;i 1)a.push(n); 返回a; } 迹(素数分解(12));//给出:2,2,3 迹(素数分解(288));//给出:2,2,2,2,3,3 trace(prime_分解(35206));//给出:2,29607
“答案是错误的”,请您附上一个例子,说明预期结果?(为了澄清起见)此外,您可能还想了解哪些是常用于阶乘计算的。谢谢您的回答!例如,当我要进行阶乘的变量(var tall)等于6、12或18时,我的代码会跟踪“6=2*3”、“12=2*2*3”等。但如果尝试使用var tall=288,则输出为“288=2*2*2*2*3”,这是不正确的。@Dodger我认为我尝试使用的方法几乎毫无用处,它将无法分解具有大量素因子的变量(?).经过几次尝试后,我成功地修改了代码,使其能够将值分解为400(这是我最初的任务)。您的代码更有效,并且可以对任何整数进行因式分解。谢谢!那么您不需要一个包含所有原始数的数组来进行因式分解吗?@akmozo您的代码是正确的,但是:1.您应该始终指定您的函数应该返回的值的类型(此处:数组).2.若要声明新数组,请使用数组文字而不是新数组()。执行此操作:[],而不是此操作:新数组()3.用分号终止每个语句。有关详细信息:@MattisTrygstad No,我们不需要包含所有原始数的数组,因为
while
循环执行此任务。