h5 哥德巴赫猜想验证、函数和数组、函数的调用、形参与实参、参数的传递

作业:验证8-10000以内的数字是否满足哥德巴赫猜想。(哥德巴赫猜想:任何一个大于6的偶数都可以拆分为两个素数的和。)

//哥德巴赫猜想:任何一个大于6的偶数都可以拆分为两个素数的和
 
var isGDBH=false;
for (var i =8; i<10000;i+=2) {//遍历8-10000的所有偶数,去判断每一个偶数是两个素数的和
        
for( var j=2;j<i;j++) {
            
var k=i-j;
            
var isPrime1=true;
       
for(var num1=2;num1<j;num1++) {//判断j是不是素数
           
if (j%num1==0) {
               
var isPrime1=false;
           
}
        }
             var isPrime2=true;
       
for(var num2=2;num2<k;num2++){
    
      if(k%num2==0){
              
var isPrime2=false;
          
}
       }
             if(isPrime1 && isPrime2){
                
var isGDBH=true;
                
break;
            
}else{
                
continue;
            
}
            }
    if(isGDBH){
       
document.write(i+"满足哥德巴赫猜想"+j+"+"+k+"</br>");
   
}else{
       
document.write(i+"不满足哥德巴赫猜想"+"</br>");
   
}
         }

 

 

4 函数和数组

函数的功能

函数的名字

函数的参数

函数的返回值

例:输出100以内的素数:

方法一:循环的嵌套

for( var j=2;j<100;j++){
    var isPrime=true;
    for (var i =2; i <j; i++){
        if (j % i ==0) {
            varisPrime = false;
            break;
        }
    }
    if (isPrime) {
      document.write(i+"&nbsp;");
    }
}

方法二:函数法

for(var num=2;num<100;num++){
    if(isPrime(num)){
       document.write(num+"是素数</br>");
    }
}
 /*
 
*函数的功能:判断一个数是不是素数
 
* 函数的名字:isprime
 
* 函数的参数:一个待判断的数
 
* 函数的返回值:true/false
 
*/
 
function isPrime(num){
     var flag=true;
     for(var i=2;i<num;i++) {
         if (num%i==0) {
             varflag = false;
             break;
         }
     }
     return flag
 
}

这种解决问题的方法可以将复杂的问题简单化。用量化处理大的问题。如果你遇到了问题,可以一直这样分解下去直到你认为简单为止。

定义和用法

定义:

关键字 function+函数的名字isprime(+函数的参数num){

。。。

返回的结果

}

 

Funtion isprime(num){

Return…

}

Isprime就是函数的名字

Num叫做形参

Return就是返回结果

注意:设计比实现更重要。在后面的抽象函数中要求写上函数的设计

函数的调用:

函数只有调用了之后才会运行

函数名+要传递的参数

Isprime(2)

2就是实参

//哥德巴赫猜想:任何一个大于6的偶数都可以拆分为两个素数的和
for (var i=8; i<10000;i+=2){//遍历8-10000的所有偶数,去判断每一个偶数是两个素数的和
   
if (isGDBH(i)) {
        document.write(i +"满足哥德巴赫猜想+ "</br>");
    } else {
        document.write(i +"不满足哥德巴赫猜想" + "</br>");
    }
}
    function isPrime(n){
        var isPrime=true;
        for (var j = 2; j< n; j++) {
            if(n % j == 0) {
                var isPrime = false;
                break;
            }
        }
        returnisPrime;
    }
    function isGDBH(num){
        var flag=false;
        for(var i=2;i<num;i++){
            vark=num-i;
            if(isPrime(i) && isPrime(k)) {
                var flag = true;
                break;
            } else{
                continue;
            }
        }
        returnflag;
    }

设计并实现一个函数验证角股定理

任意一个数如果是偶数将他除以二,如果为奇数就乘以3+1,最终一点能得到1.

,验证100以内是否都满足角谷定理。

function isjgdl(i) {
    while (i!=1) {
        if (i% 2 == 0) {
            vari= i / 2;
            document.write(i*2+"="+i*2+"/2="+i+"</br>");
        } else{
            vari= 3 *i + 1;
            document.write((i-1)/3+"="+(i-1)/3+"*3+1="+i+"</br>");
        }
    }
    returntrue;
}
for(var num=1;num<100;num++) {
    if (isjgdl(num)) {
        document.write(num+"满足角谷定理");
    }
}

 

函数满足高内聚、低耦合。一个函数最好就实现一个功能。

例:设计并实现一个函数,实现对一个三位数个位进行重新排列得到最大值

function getmax(num) {
    var a = Math.floor(num / 100);
    var b = Math.floor(num / 10) % 10;
    var c=num%10;
    var max = Math.max(a, b, c);
    var min = Math.min(a, b, c);
    var middle = Middle(a,b,c);
    var res = max * 100 + middle * 10 + min;
    return res;
}
function Middle(a,b,c) {
    if (a= Math.max(a,b, c)) {
        returnMath.max(b,c);
    } else {
        if (b= Math.max(a,b, c)) {
            returnMath.max(a,c);
        } else{
            if(c = Math.max(a, b, c)) {
                return Math.max(a, b);
            }
        }
    }
}

var num=Number(prompt("输入任意一个三位数"));
    alert(getmax(num));

 

函数就是一个数据加工黑盒子。也叫做实现某个独立功能的代码段。要忽略细节问题。我们只关心返回的结果,并不关心具体的步骤。

参数的传递

传递的方式有两种,值传递和引用传递。

值传递

var a=2;
function changeA(a){
    var a=3;
}
changeA(a);
alert(a)                    //2

引用传递

var a={
    value:2
};
function changeA(b){
    b.value++;
};
changeA(a);
alert(a.value);              //3

引用传递有什么作用?

在函数设计的时候,只能返回一个结果,但是有时需要同时返回多个结果。

这个时候可以用对象。在函数的外面定义一个对象,然后在函数里面去改变这个对象的值。最终这个结果在函数执行之后,返回到原来的对象当中。

作业:设计并实现一个函数,将一个四位数进行重新排列同时得到最大值和最小值。

function getmax(num) {
    var a = Math.floor(num / 1000);//千位
   
var b = Math.floor(num / 100) %10;//百位
   
var c=Math.floor(num / 10) % 10;//十位
   
var d=num%10;//个位
   
var max = Math.max(a, b, c,d);
    var min = Math.min(a, b, c,d);
    var middle1 = Middle1(a,b,c,d);
    var middle2 = Middle2(a,b,c,d);
    var res = max*1000+middle1*100+middle2*10+min;
    return res;
}
function getmin(num) {
    var a = Math.floor(num / 1000);//千位
   
var b = Math.floor(num / 100) %10;//百位
   
var c=Math.floor(num /10) % 10;//十位
   
var d=num%10;//个位
   
var max = Math.max(a, b, c,d);
    var min = Math.min(a, b, c,d);
    var middle1 = Middle1(a,b,c,d);
    var middle2 = Middle2(a,b,c,d);
    var res = min*1000+middle2*100+middle1*10+max;
    return res;
}
function Middle1(a,b,c,d) {
    if (a==Math.max(a,b, c,d)) {
        returnMath.max(b,c,d);
    } else {
        if (b==Math.max(a,b, c,d)) {
            returnMath.max(a,c,d);
        } else{
            if(c==Math.max(a, b, c,d)) {
                return Math.max(a, b,d);
            }else{
                if (d==Math.max(a, b, c,d)) {
                    return Math.max(a, b, c);
                }
            }
        }
    }
}
function Middle2(a,b,c,d) {
    if (a==Math.min(a,b, c,d)) {
        returnMath.min(b,c,d);
    } else {
        if (b==Math.min(a,b, c,d)) {
            return Math.min(a,c,d);
        } else{
            if(c==Math.min(a, b, c,d)) {
                return Math.min(a, b,d);
            }else{
                if (d==Math.min(a, b, c,d)) {
                    return Math.min(a, b, c);
                }
            }
        }
    }
}

var num=Number(prompt("输入任意一个四位数"));
alert(getmax(num));
alert(getmin(num));

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值