程序员必做50题(11-20)JavaScript篇


//程序11
//判断101-200之间有多少个素数,并输出所有素数。
for(var n=101;n<=200;n++){
    for(var i=2;i<n;i++){
        if(n%i==0){
        console.log(n);
        break;
        }
    }
}
//------------------------------------------------------------------------------------------------------------------------------
//程序12
//打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个“水仙花数”,因为153=1的三次方+5的三次方+3的三次方。
for(var i=100,s=0;i<=999;i++){
   var arr=i.toString().split('');
   var s=Math.pow(arr[0],3)+Math.pow(arr[1],3)+Math.pow(arr[2],3);
   if(i==s){
   console.log(i);
   }
}
//------------------------------------------------------------------------------------------------------------------------------
//程序13
//利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的用B表示,6 0分以下的用C表示。
//三目运算符
var score=99;
var result=score>=90 ? 'A':(score>=60 ? 'B':'C');
console.log(result);
//------------------------------------------------------------------------------------------------------------------------------
//程序14
//输入两个正整数m和n,求其最大公约数和最小公倍数。
//辗转相除法
function fn(num1,num2){
var i=1,s=1;
var n1=num1,n2=num2;
do{
    s=num1%num2;
    num1=num2;
    num2=s;
if(s==0){
var factor=num1;
 }
    i++;
}
while (i<1000);
var multiple=n1*n2/factor;
    return '最大公约数:'+factor
           +'\n最大公倍数:'+multiple;            
}
var f=fn(40,30);
console.log(f);
//更相减损法
function fn(num1,num2){
var i=1,s=1,j=0;
var n1=num1,n2=num2;
do{
   if(num1%2==0 && num2%2==0){
       num1/=2;
       num2/=2;
       j++;
   }else{
       if(num1>num2){
       s=num1-num2;
       num1=num2;
       num2=s;
       var t=num1;
       }else{
       s=num2-num1;
       num2=num1;
       num1=s;
       var t=num2;
       }
     if(s==0){
    var factor=t*Math.pow(2,j);
     }
    } 
    i++;
}
while (i<1000);
var multiple=n1*n2/factor;
    return '最大公约数:'+factor
           +'\n最大公倍数:'+multiple;            
}
var f=fn(40,30);
console.log(f);
//程序15
//输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
var str='JavaScript  我/-学习/123#$_Web';
var arr=str.split('')
var a=0,b=0,c=0,d=0;
for (var i=0;i<arr.length ;i++ ){
    var codeArr=arr[i].charCodeAt()
        if (codeArr>=19968 || codeArr>=65 &&codeArr<=90 || codeArr>=97 && codeArr<=122){
             a++;
        }
        if(codeArr>=48 && codeArr<=57){
             b++;
        }
        if(codeArr==32){
             c++;
        }
}
var other=arr.length-a-b-c
console.log('中英文字母个数:'+a);
console.log('数字个数:'+b);
console.log('空格数:'+c);
console.log('其他字符个数:'+other);
//-----------------------------------------------------------------------------------------------------------------------------
//程序16
//求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加由键盘控制
function fn(a,n){
   for (var i=0,t=0,s=0;i<=n-1 ;i++ ){
      t+=a*Math.pow(10,i);
        s+=t;
   }
   console.log(s);
}
fn(3,5);
//-----------------------------------------------------------------------------------------------------------------------------
//程序17
//一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6=1+2+3.编程找出1000以内的所有完数。
for(var j=1;j<=1000;j++){
   for (var i=1,s=0;i<j ;i++ ){
        if(j%i==0){      
          s+=i;
        }
   } 
 if(s==j){
   console.log(s);
  }
}
//-----------------------------------------------------------------------------------------------------------------------------
//程序18
//一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?
//方法一
var n=3;
for (var i=1,sum=0;i<=n ;i++ ){
   function fn(i){ 
      if(i==1){
       return 50;
      }
      return fn(i-1)/2
   }
      sum+=fn(i);
}
console.log(sum+'\n'+fn(10));
//方法二
var n=10;
var h=100,s=0;
for(var i=1;i<=n;i++){
    h/=2;
    s+=h;
}
console.log(s+'\n'+h);
//----------------------------------------------------------------------------------------------------------------------------
//程序19
//猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个,第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。1534
//规律:第一天 num/2+1;第二天 (num/2+1)/2;第三天 (num/2+1)/4;...

for(var num=0;num<100000;num+=2){
    var a=num/2+1;
    for(var i=1,sum=0;i<10;i++){
        sum+=a;
        a/=2;
     }
    if((num-sum)==1){
     console.log(num);
     }
}

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM