获取数字在圆周率中的位置


第一个问题是首先要获取圆周率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