현재 주어진 수를 인수 분해 할 수있는 프로그램을 만들려고하고 있지만 몇 가지 문제가 있습니다. 나는 이미 첫 번째 x 소수를 생성하는 프로그램을 코딩했고, 나는이 프로그램을 사용하여 나의 이전 작업을 해결할 수 있다고 생각했다.Actionscript 3 프라임 인수 분해
내가 마주 치게되는 문제는 프로그램이 작은 수만 분해 할 수 있다는 것입니다. 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);
}
당신이 예상 결과와 함께, 예를 첨부하시기 바랍니다 수있다 "대답은 잘못"? (단지 명료 함을 위해서) 또한, [Recursive Functions] (http://www.designswan.com/archives/as3-recursive-functions-vs-loop-functions.html)를 살펴볼 수도 있습니다. 계승 계산. – DodgerThud
답변 해 주셔서 감사합니다! 변수 (var tall)가 6, 12 또는 18과 같은 경우, 결과적으로 "6 = 2 * 3", "12 = 2 * 2 * 3"등이됩니다. var tall = 288이면 출력은 "288 = 2 * 2 * 2 * 2 * 3"으로 잘못되었습니다. @DodgerThud – Smeestad
나는 사용하려는 방법이 거의 쓸모가 없다고 생각합니다. 많은 양의 프라임 팩터 (?)로 변수를 인수 분해 할 수 없습니다. – Smeestad