JavaScript基础,各位大神拜托了

小鸡5毛钱一只,母鸡3块钱一只,公鸡5块钱一只,问300块钱买100只鸡,有几种买法?用JavaScript写

var g, m, x;
for (g = 0; g <= 60; g++) {
for (m = 0; m <= 100; m++) {
for (x = 0; x <= 100; x++) {
if ((5 * g + 3 * m + x / 2 == 300) && (g + m + x == 100)){
alert("公鸡"+g+"只,母鸡"+m+"只,小鸡" +x+"只。"); }
}
}
}

                                            冒昧改了一下楼上的,g既然是公鸡,那么不可能超过60个,所以把一百改为60,可以减少40次大的循环。
 var g, m, x;
        for (g = 0; g <= 100; g++) {
            for (m = 0; m <= 100; m++) {
                for (x = 0; x <= 100; x++) {
                    if ((5 * g + 3 * m + x / 2 == 300) && (g + m + x == 100))
                        alert("公鸡"+g+"只,母鸡"+m+"只,小鸡" +x+"只。"); 
                        }
                        }
                        }
var g, m, x;
for (g = 0; g < 60; g++) {
    for (m = 0; m < 100; m++) {
        for (x = 0; x < 100; x++) {
            if ((5 * g + 3 * m + x / 2 == 300) && (g + m + x == 100)){
                alert("公鸡"+g+"只,母鸡"+m+"只,小鸡" +x+"只。"); }
            }
        }
}

改了二楼的,既然都要有,那么不可能有是100的情况。

同上,嵌套三次循环就行了

    var g, m, x, maxNumber=100, maxPrice=300;
    console.profile('性能分析器');
    console.time("循环");
    for (g = 0; g <= maxNumber; g++) {
        if(5 * g > maxPrice){
            break;
        }
        for (m = 0; m <= maxNumber; m++) {
            if((5 * g + 3 * m) > maxPrice || (g + m > maxNumber)){
                break;
            }
            for (x = 0; x <= maxNumber; x++) {
                if ((5 * g + 3 * m + x / 2 == maxPrice) && (g + m + x == maxNumber)){
                    console.log("公鸡" + g + "只,母鸡" + m + "只,小鸡" + x + "只。");
                }
            }
        }
    }
    console.timeEnd("循环");
    console.profileEnd('性能分析器');

 多加两个判断,会让性能快几毫秒,完美主义者,哈哈哈

var g, m, x;
for (g = 0; g <= 60; g++) {
for (m = 0; m <= 100; m++) {
x = 100-y-x;
if ((5 * g + 3 * m + x / 2 == 300) && (g + m + x == 100)){
alert("公鸡"+g+"只,母鸡"+m+"只,小鸡" +x+"只。"); }
}
}