求解这个 题目的思路:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。

时间:2022-05-15 00:26:14
各位大神好!
 我看到这几个题比较有兴趣但是没有思路 可否请各路大神进行下思路指导
!谢谢!

【程序4】 
题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。 
程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成: 
(1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。 
(2)如果n<>k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n,重复执行第一步。 
(3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。 

【程序5】 
题目:利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的用B表示,60分以下
的用C表示。 
1.程序分析:(a>b)?a:b这是条件运算符的基本例子。 

【程序6】 
题目:输入两个正整数m和n,求其最大公约数和最小公倍数。 
1.程序分析:利用辗除法。 

【程序7】 
题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。 
1.程序分析:利用while语句,条件为输入的字符不为'\n'. 

做了【程序8】 
题目:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),
几个数相加有键盘控制。 
1.程序分析:关键是计算出每一项的值。 

【程序9】 
题目:一个数如果恰好等于它的因子之和,这个数就称为"完数"。例如6=1+2+3.编程 找出1000以内的所有完
数。 

【程序10】 
题目:一球从100米高度*落下,每次落地后反跳回原高度的一半;再落下,求它在 第10次落地时,共经过多
少米?第10次反弹多高?

【程序11】 
题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? 
1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去 掉不满足条件的排列。 

【程序12】 
题目:企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万
元时,低于10万元的部分按10%提成,高于10万元的部分,可可提成7.5%;20万到40万之间时,高于20万元的部
分,可提成5%;40万到60万之间时高于40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可
提成1.5%,高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数? 
1.程序分析:请利用数轴来分界,定位。注意定义时需把奖金定义成长整型。 

4 个解决方案

#1


4.function f1(num){
    var i = 2;
    while(i<=num){
        if(num%i==0){
            console.log(i);
            num /= i;
        }else{
            i++;
        }
    }
}
5.score=score>=90?"A":(score>=60?"B":"C";
6.function f2(a,b){
while(a%b!=0){
var temp;
if(a>=b){
temp=b;
b=a%b;
a=temp;
if(a%b==0){
console.log(b);
}
}else{
temp=a;
a=b;
b=temp;
}
}
}
8.function f3(a,b){
var str=a+"";
var sum=0;
for(var i=1;i<=b;i++){
str+=a;
var num=parseInt(str);
sum+=num;
console.log(sum);
}
}
其他的不会

#2


9题

var ws=[];
var ct=[];
var ctNum=0;
for(var i=1;i<1001;i++){
ct=[];
ctNum=0;
for(var j=1;j<i;j++){
if(i%j==0){
ct.push(j);
}
}
for(var k=0;k<ct.length;k++){
ctNum+=ct[k];
}
if(ctNum==i){
ws.push(ctNum);
}
}
for(var h=0;h<ws.length;h++){
document.write(ws[h]+"\n");
}

#3


    //【程序4】
    function fj(n){
        var x = "",t;
        !function(a){
            for(t = a;--t;){
                if(a % t == 0){
                    x += "*"+ a / t;
                    return arguments.callee.call(null,t);
                }
            }
            if(t==1) x += "*"+ a;
        }(n);
        return n +"="+ x.substring(1);
    }
    //【程序5】
    var cj = n >= 90 ? "A" : n >= 60 ? "B" : "C";
    //【程序6】辗转相除法,代码略……
    //【程序7】 while,for等都太复杂了
    var str = " ssg451 35sdf45 12Wsd%#$ ";
    console.log("英文个数:",str.split(/[a-z]/gi).length - 1);
    console.log("空格个数:",str.split(/\s/g).length - 1);
    console.log("其他个数:",str.split(/[^a-z0-9 ]/gi).length - 1);
    //【程序10】数学老师不在,体育老师不回答
    //【程序11】排序问题 4*3*2=24个
    //【程序12】
    function ly(w){
        //w 单位W万元
        if(w>100){
            return 1+ (w-100)*0.01;//10万里取1万,其他部分1%
        }else if(w>60){
            return 1+ (w-60)*0.015;//10万里取1万,其他部分1.5%
        }else if(w>40){
            return 1+ (w-40)*0.03;//10万里取1万,其他部分3%
        }else if(w>20){
            return 1+ (w-20)*0.05;//10万里取1万,其他部分5%
        }else if(w>10){
            return 1+ (w-10)*0.075;//10万里取1万,其他部分7.5%
        }else{
            return w*0.01;//总的10%
        }
    }

#4


12题:

    var s = [[1000000, 0.01], [600000, 0.015], [400000, 0.03], [200000, 0.05], [100000, 0.075], [0, 0.1]];
    function calc() {
        var n = Number($("#Text1").numberbox('getValue'));
        var x = 0;
        for (var i = 0; i < s.length; i++) {
            var result = calc2(n, s[i]);
            n = result[0];
            x += result[1];
        }
        alert(x);
    }

    //a为利润
    //b为区间
    //c为区间分配比
    function calc2(a, b) {
        var x = [a, 0]; //默认返回原始值和分配为0
        if (a > b[0]) {
            x = [b[0], (a - b[0]) * b[1]];
        }
        return x;
    }

#1


4.function f1(num){
    var i = 2;
    while(i<=num){
        if(num%i==0){
            console.log(i);
            num /= i;
        }else{
            i++;
        }
    }
}
5.score=score>=90?"A":(score>=60?"B":"C";
6.function f2(a,b){
while(a%b!=0){
var temp;
if(a>=b){
temp=b;
b=a%b;
a=temp;
if(a%b==0){
console.log(b);
}
}else{
temp=a;
a=b;
b=temp;
}
}
}
8.function f3(a,b){
var str=a+"";
var sum=0;
for(var i=1;i<=b;i++){
str+=a;
var num=parseInt(str);
sum+=num;
console.log(sum);
}
}
其他的不会

#2


9题

var ws=[];
var ct=[];
var ctNum=0;
for(var i=1;i<1001;i++){
ct=[];
ctNum=0;
for(var j=1;j<i;j++){
if(i%j==0){
ct.push(j);
}
}
for(var k=0;k<ct.length;k++){
ctNum+=ct[k];
}
if(ctNum==i){
ws.push(ctNum);
}
}
for(var h=0;h<ws.length;h++){
document.write(ws[h]+"\n");
}

#3


    //【程序4】
    function fj(n){
        var x = "",t;
        !function(a){
            for(t = a;--t;){
                if(a % t == 0){
                    x += "*"+ a / t;
                    return arguments.callee.call(null,t);
                }
            }
            if(t==1) x += "*"+ a;
        }(n);
        return n +"="+ x.substring(1);
    }
    //【程序5】
    var cj = n >= 90 ? "A" : n >= 60 ? "B" : "C";
    //【程序6】辗转相除法,代码略……
    //【程序7】 while,for等都太复杂了
    var str = " ssg451 35sdf45 12Wsd%#$ ";
    console.log("英文个数:",str.split(/[a-z]/gi).length - 1);
    console.log("空格个数:",str.split(/\s/g).length - 1);
    console.log("其他个数:",str.split(/[^a-z0-9 ]/gi).length - 1);
    //【程序10】数学老师不在,体育老师不回答
    //【程序11】排序问题 4*3*2=24个
    //【程序12】
    function ly(w){
        //w 单位W万元
        if(w>100){
            return 1+ (w-100)*0.01;//10万里取1万,其他部分1%
        }else if(w>60){
            return 1+ (w-60)*0.015;//10万里取1万,其他部分1.5%
        }else if(w>40){
            return 1+ (w-40)*0.03;//10万里取1万,其他部分3%
        }else if(w>20){
            return 1+ (w-20)*0.05;//10万里取1万,其他部分5%
        }else if(w>10){
            return 1+ (w-10)*0.075;//10万里取1万,其他部分7.5%
        }else{
            return w*0.01;//总的10%
        }
    }

#4


12题:

    var s = [[1000000, 0.01], [600000, 0.015], [400000, 0.03], [200000, 0.05], [100000, 0.075], [0, 0.1]];
    function calc() {
        var n = Number($("#Text1").numberbox('getValue'));
        var x = 0;
        for (var i = 0; i < s.length; i++) {
            var result = calc2(n, s[i]);
            n = result[0];
            x += result[1];
        }
        alert(x);
    }

    //a为利润
    //b为区间
    //c为区间分配比
    function calc2(a, b) {
        var x = [a, 0]; //默认返回原始值和分配为0
        if (a > b[0]) {
            x = [b[0], (a - b[0]) * b[1]];
        }
        return x;
    }