獲取數字在圓周率中的位置


第一個問題是首先要獲取圓周率PI的值,自己在網上查了一下利用Leibniz定理,計算出圓周率。

第二個問題是獲取手機號碼的后四位,利用stringObject.substring(start,stop)方法提取字符串中介於兩個指定下標之間的字符。

第三個問題遍歷輸出號碼后四位的每一位,用stringObject.charAt(index) 方法返回指定位置的字符。

然后是利用stringObject.indexOf(searchvalue,fromindex)方法返回某個指定的字符串值在字符串中首次出現的位置

這樣寫下來最后出現一個問題,document.write("<br/>"+mm.indexOf(str));老是報錯,然后檢查發現得出的圓周率mm是一個值,要把它轉化為字符串才能使用。

也就是 document.write("<br/>"+mm.toString().indexOf(str));

 

 1 <!doctype html>
 2 <html lang="zh-cn">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>隨機數</title>
 6     <script type="text/javascript">
 7     //Leibniz定理:1/1-1/3+1/5-1/7+1/9...=pi/4
 8     var count=100000;
 9     var PI=1;
10     var set=1;
11     for(var i=3;i<count;i++,i++,set++){
12         if(set%2==0){
13             PI+=1/i;
14         }else{
15             PI-=1/i;
16         }
17     }
18     //計算圓周率
19     var mm=PI*4;
20     document.write(mm);
21     //alert(mm);
22     var phoneNum="16546324056";
23     //輸出后四位,從第七個開始分出后四位
24     var strPhoneNum=phoneNum.substring(7);
25     //alert(strPhoneNum);
26     for(var i=0;i<4;i++){
27         //獲取后四位各個字符
28         var str=strPhoneNum.charAt(i);
29         //alert(str);
30         //mm得出的是一個值,將值轉化為字符串再檢索
31         document.write("<br/>"+mm.toString().indexOf(str));
32     }
33 
34     </script>
35 </head>
36 <body>
37     
38 </body>
39 </html>
View Code

 

這樣的出來的還有弊端就是沒有出現的值以-1的形式輸出,檢索出來的只是字符串值在字符串中首次出現的位置

先保存,晚會拋出修正后的代碼....

第二期修改中出現的問題:這樣查找效率太低,只能一次次的查,代碼較多冗余度

<script type="text/javascript">
    //Leibniz定理:1/1-1/3+1/5-1/7+1/9...=pi/4
    var count=100000;
    var PI=1;
    var set=1;
    for(var i=3;i<count;i++,i++,set++){
        if(set%2==0){
            PI+=1/i;
        }else{
            PI-=1/i;
        }
    }
    //計算圓周率
    var mm=PI*4;
    document.write(mm);
    //alert(mm);
    var phoneNum="16546324056";
    //輸出后四位,從第七個開始分出后四位
    var strPhoneNum=phoneNum.substring(7);

    //alert(strPhoneNum);
    for(var i=0;i<4;i++){
        //獲取后四位各個字符
        var str=strPhoneNum.charAt(i);
        //alert(str);
        //mm得出的是一個值,將值轉化為字符串再檢索
        var position=mm.toString().indexOf(str);
        //alert(position);
        if(position=="-1"){
            document.write("<br/>PI中不存在"+i);
        }else{
            

            document.write("<br/>"+str+"存在字符中第"+position+"位");
            //查找出第二個出現的位置
            var position2=mm.toString().indexOf(str,position+1);
            if(position2!="-1"){
                document.write("<br/>"+str+"存在字符中第"+position2+"位");
            }
            else{
                document.write("<br/>字符串中只存在一個"+str);
            }
            //查找出第三個出現的位置
            var position3=mm.toString().indexOf(str,position2+1);
            if(position3!="-1"){
                document.write("<br/>"+str+"存在字符中第"+position3+"位");
            }
            else{
                document.write("<br/>字符串中存在兩個"+str);
            }
        }
    }
    </script>
View Code

 后來修改了之后的代碼:是查找號碼后四位中的每一個數字在PI中的位置(現在才發現理解錯題意了,OMG的,這是有多蠢!!!!!!!),

 1 <script type="text/javascript">
 2     var count=100000;
 3     var PI=1;
 4     var set=1;
 5     for(var i=3;i<count;i++,i++,set++){
 6         if(set%2==0){
 7             PI+=1/i;
 8         }else{
 9             PI-=1/i;
10         }
11     }
12     //計算圓周率
13     var mm=(PI*4).toString();
14     document.write("圓周率是:"+mm);
15     //var bb=mm.split(".");
16     // document.write("圓周率是:"+bb);
17     var pai=mm.split(".").join("")
18     document.write("<br/>去掉點之后的圓周率是:"+pai);
19     //alert(mm);
20     var phoneNum="16546324056";
21     //輸出后四位,從第七個開始分出后四位
22     var strPhoneNum=phoneNum.substr(7);
23     document.write("<br/>號碼后四位是:"+strPhoneNum);
24 
25     for(i=0;i<pai.length;i++){
26         var sub=pai.substr(i,1);
27         document.write("<br/>"+sub);
28 
29         for(var j=0;j<4;j++){
30         //獲取后四位各個字符
31         var str=strPhoneNum.charAt(j);
32         if(str==sub){
33             document.write("&nbsp;&nbsp;"+str+"在PI中的位置是:"+(i+1));
34         }
35 
36         }
37 
38     }
View Code

——————————————————————————————————————————————————————————————————————————————————

 題意是要后四位號碼在PI中位置,號碼后四位是連續的...,/(ㄒoㄒ)/~~

<script type="text/javascript">
    var count=100000;
    var PI=1;
    var set=1;
    for(var i=3;i<count;i++,i++,set++){
        if(set%2==0){
            PI+=1/i;
        }else{
            PI-=1/i;
        }
    }
    //計算圓周率
    var mm=(PI*4).toString();
    document.write("圓周率是:"+mm);
    //var bb=mm.split(".");
    // document.write("圓周率是:"+bb);
    var pai=mm.split(".").join("")
    document.write("<br/>去掉點之后的圓周率是:"+pai);
    //alert(mm);
    var phoneNum="16546324056";
    //輸出后四位,從第七個開始分出后四位
    var strPhoneNum=phoneNum.substr(7);
    document.write("<br/>"+strPhoneNum);

    for(i=0;i<pai.length-4;i++){
        var sub=pai.substr(i,4);
        //document.write("<br/>"+sub);
        if(strPhoneNum==sub){
            document.write(strPhoneNum+"在PI中的位置是:"+i);
            i=i+4;
        }else{
            document.write("<br/>沒找到");
        }
        if(i==pai.length-4){
            document.write("沒找到");
        }

    }
View Code

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM