程序員必做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