函数实操

    科技2026-04-01  18

    1.编写一个函数,功能判断一个任意一个数是否是素数

    function isPrime(num){ //1不是一个素数,排除1这个值 if(num ===1) return false; //判断num是否是一个素数 //如果是素数,函数返回一个true。不是素数,返回false for (var i=2;i<num;i++){ if(num % i ===0){//2到那个值之间有无可被那值整除的 //执行到这里,num不是一个素数 return false;//不是素数 } } //当程序执行到这里,说明num是一个素数 return true; } var isP = isPrime(1); console.log(isP);//true num是素数

    2.计算100-200之间所有素数的和

    function getSum (){ var sum =0; for(var i =100; i <=200;i++){ //判断i是否是素数 if(isPrime(i)){//true:i是素数 sum+=i; } } return sum; } var sum = getSum(); console.log(sum);

    3.输出:100可以拆成哪两个素数的和

    //1 99 //2 98 function fn(){ var num; for(var i =1; i<=50;i++){ if(isPrime(i)){//true i是一个素数 num =100-i; //判断num是否是一个素数 if(isPrime(num)){//true num是素数 console.log('100可以拆成'+i+'和'+num+'两个素数的和'); } } } } fn();

    4.函数实现:输出1—3之间能组成的奇数个数,并输出这些数

    // 要求 : 组成的数是一个两位数,个位数!=十位数 // 组成: 13 21 23 31 共4个 // 1 2 3 // 1 2 3 function fn(){ var num,j; for (var i = 1; i <= 3; i++) { //i = 1 2 3 for(j = 1; j <= 3; j++){ if(i != j){ //console.log("" + i + j); num = Number("" + i + j); //console.log(num) if(num % 2 === 1){ console.log(num); } } } } } fn();

    5.编写一个函数,输入n为偶数时,调用函数求1/2+1/4+…+1/n,当输入n为奇数时,调用函数求1+1/3+…+1/n

    function fn(n){ //n偶数 //1/2+1/4+...+1/n //分子是1 //分母是2 4 6 8...n var sum = 0; if(n % 2 === 0){ for (var i = 2; i <= n; i+=2) { sum+= 1/i; } }else{ for (var i = 1; i <= n; i+=2) { sum+= 1/i; } } return sum; //n偶数 //分母是2 4 6 8...n //奇数 //分母是1 3 5 7 9...n var index = 1; //根据n的奇偶性来初始化index. if(n % 2 === 0) index = 2; var sum = 0; while(index <= n){ sum += 1/index; index += 2; } return sum; } var result = fn(4); console.log(result)

    6.如果一个数恰好等于它的因数之和,则称该数为“完全数” perfect number。请列出2~10000的所有完全数

    //判断一个数是否是完全数 function isPerfectNumber(num){ var sum = 0; for (var i = 1; i < num; i++) { if(num % i === 0){ sum += i; } } //是完全数返回true if(sum === num){//是完全数 return true; } //不是返回false return false;//不是完全数 } function getPerfectNum(){ for (var i = 2; i <= 10000; i++) { if(isPerfectNumber(i)){//true,i是完全数 console.log(i + "是完全数"); } } } getPerfectNum();

    7.编写一个函数 :实现计算任意一个数的各个位数的和

    //例如 : 234 位数和为 9 //num = 234 //g num % 10 4 num = 234 // num = parseInt(num / 10); num = 23 //g num % 10 3 num = 23; // num = parseInt(num / 10); num = 2 //g num % 10 2 num = 2; // num = parseInt(num / 10); num = 0 function fnSum(num){ var sum = 0; while( num != 0 ){ sum += num % 10; //取出个位数 储存个位相加 num = parseInt( num/10 );//每次取出都除10继续上面操作 } return sum; } var s = fnSum(3456); alert(s);

    8,案例:递归实现斐波那契数列的第n项

    // 1 1 2 3 5 8 13 21 34.... // 第一项是0 第二项是1 后面每一项是前面两项的和 //F(0)=1,F(1)=1, F(n)=F(n-1)+F(n-2)(n>=2,n∈N*); //兔子下崽 //1 2 3 4 5 6 7 8 9 10 11 12 //1 1 2 3 5 8 13 21 34 55 89 144 function fbnq(m){ if(m === 1 || m === 2){ return 1; } return fbnq(m-2)+fbnq(m-1); } // fbnq(1) 1 // fbnq(2) 1 // fbnq(3) fbnq(1)+fbnq(2) // fbnq(4) console.log(fbnq(12));

    9,欧几里德算法(求两个数的最大公约数);

    //辗转相除法(欧几里德算法); //两个数的最大公约数 // 24 64 //被除数 除数 商 余数 // 24 / 64 = 0 24 //64 / 24 = 2 16 //24 / 16 = 1 8 //16 / 8 = 2 0 //如果余数没有为0,把这一次的除数,作为下一次的被除数,把余数作为下一次的除数 //辗转相除的最后一次的除数是它们最大公约数 function ouji(num1,num2){ var r = num1 % num2; if(r === 0){ return num2; } return ouji(num2,r); return num2 === 0 ? num1 : ouji(num2,num1 % num2); } console.log(ouji(24,64));
    Processed: 0.011, SQL: 9